Technology Apr 28, 2026 · 6 min read

Minimal Fedora install with Niri + DankMaterialShell

I wanted a minimal Fedora base without giving up a modern Wayland desktop. This guide shows a reproducible flow to install Fedora from the Everything ISO, then layer on: Niri as the Wayland window manager DankMaterialShell (DMS) as the desktop shell (Quickshell + Go) via the DankLinux installer...

DE
DEV Community
by pizidavi
Minimal Fedora install with Niri + DankMaterialShell

I wanted a minimal Fedora base without giving up a modern Wayland desktop.

This guide shows a reproducible flow to install Fedora from the Everything ISO, then layer on:

  • Niri as the Wayland window manager
  • DankMaterialShell (DMS) as the desktop shell (Quickshell + Go) via the DankLinux installer

If your hardware differs (especially Wi‑Fi and GPU), driver/firmware steps may differ.

Table of contents

  • 0) Before you start
  • 1) Install Fedora minimal
  • 2) First boot: baseline setup
  • 3) Install Niri + DMS via DankLinux
  • 4) Post-install: drivers + core functionality
  • 5) Optional: daily driver packages
  • Final checklist

0) Before you start

  • A USB drive with the Fedora Everything ISO written to it
  • Basic familiarity with the Fedora installer
  • Internet connection (for updates + packages)

If you’re installing on a laptop, keep an Ethernet adapter/hotspot handy — Wi‑Fi firmware is the most common “minimal install” snag.

1) Install Fedora minimal

Boot from the USB and follow these steps in the Fedora installer:

  1. Select your language
  2. Set your keyboard layout
  3. In Software Selection, pick the minimal/custom option (keep it minimal)
  4. Configure the disk (choose your layout — Btrfs is a solid default)
  5. Create a user account and keep root disabled (recommended)

At this point you should boot into a minimal Fedora shell environment.

2) First boot: baseline setup

Maximize DNF download speed

Edit DNF’s configuration:

sudo nano /etc/dnf/dnf.conf

Add (or edit) this option:

[main]
max_parallel_downloads=10

Enable RPM Fusion repositories

RPM Fusion is needed for some codecs and (commonly) NVIDIA drivers.

sudo dnf install \
  https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm \
  https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

Update the system:

sudo dnf group upgrade core
sudo dnf upgrade --refresh

Create XDG user directories

This sets up the standard home folders (Downloads, Documents, etc.) using xdg-user-dirs.

sudo dnf install xdg-user-dirs
xdg-user-dirs-update

3) Install Niri + DMS via DankLinux

Run the installer:

curl -fsSL https://install.danklinux.com | sh

In the wizard I selected:

  1. Niri as Window Manager
  2. Alacritty as terminal emulator
  3. dms-greeter as display manager/greeter (a greetd greeter)

Ensure a graphical boot target:

sudo systemctl set-default graphical.target

Now reboot!

4) Post-install: drivers + core functionality

Now that Fedora + Niri + DMS are installed, validate the “core stuff” (networking, graphics, portals, audio). The goal is to catch driver/firmware issues early.

Install core software and firmware packages

sudo dnf install which wget pciutils linux-firmware

NOTE: pciutils provides lspci for hardware identification; linux-firmware provides firmware blobs for many peripherals.

Wi‑Fi (NetworkManager)

Install and enable NetworkManager:

sudo dnf install NetworkManager NetworkManager-wifi
sudo systemctl enable --now NetworkManager

Verify:

nmcli device status

If Wi‑Fi doesn’t work: diagnose driver/firmware

Troubleshooting commands:

# Identify the Wi‑Fi adapter + kernel driver
lspci -nnk | grep -iA3 net

# Check if common Wi‑Fi modules are loaded
lsmod | grep -E "iwl|rtl|ath9k|ath10k|mt76|b43|bcma"

# Scan logs for firmware/driver errors
sudo dmesg | grep -iE "firmware|wifi|wlan|iwl|rtl|ath|error"

Intel Wi‑Fi firmware manual install (if your adapter needs it)

Download firmware from the upstream linux-firmware repository:

wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/intel/iwlwifi/iwlwifi-so-a0-gf-a0-89.ucode
wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/intel/iwlwifi/iwlwifi-so-a0-gf-a0.pnvm

Move into /lib/firmware/ and fix ownership/permissions:

sudo mv iwlwifi-so-a0-gf-a0-89.ucode /lib/firmware/
sudo mv iwlwifi-so-a0-gf-a0.pnvm /lib/firmware/

sudo chown root:root /lib/firmware/iwlwifi-so-a0-gf-a0-89.ucode /lib/firmware/iwlwifi-so-a0-gf-a0.pnvm
sudo chmod 644 /lib/firmware/iwlwifi-so-a0-gf-a0-89.ucode /lib/firmware/iwlwifi-so-a0-gf-a0.pnvm

Restart the driver:

sudo modprobe -r iwlwifi
sudo modprobe iwlwifi

GPU (Intel + NVIDIA)

Intel iGPU (Mesa)

Install Mesa drivers and the glxinfo tool:

sudo dnf install mesa-dri-drivers mesa-vulkan-drivers mesa-libGL mesa-demos

Verify:

glxinfo | grep "OpenGL renderer"
# Expected: "Mesa Intel(R) ..."

NVIDIA dGPU

Install NVIDIA drivers from RPM Fusion:

sudo dnf install akmod-nvidia xorg-x11-drv-nvidia-cuda

Verify PRIME offload rendering:

__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia glxinfo | grep "OpenGL renderer"
# Expected: "NVIDIA GeForce RTX ..."

Quick tip

Add a shell alias for easier PRIME offload testing:

alias prime-run="__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia"

XDG Desktop Portals (Flatpak + screenshots/screencast)

Install portal backends:

sudo dnf install xdg-desktop-portal xdg-desktop-portal-gnome xdg-desktop-portal-gtk xdg-desktop-portal-wlr

Add or edit the configuration in ~/.config/xdg-desktop-portal/portal.conf:

[preferred]
default=gnome;gtk
org.freedesktop.impl.portal.Screenshot=wlr
org.freedesktop.impl.portal.ScreenCast=wlr

This uses xdg-desktop-portal-gnome as default and keeps gtk/wlr available for Wayland-specific functionality.

Keyring

Install GNOME Keyring:

sudo dnf install gnome-keyring gnome-keyring-pam seahorse

Set the portal Secret provider in ~/.config/xdg-desktop-portal/portal.conf:

[preferred]
# ... existing config
org.freedesktop.impl.portal.Secret=gnome-keyring

Enable keyring auto-unlock (PAM)

Edit /etc/pam.d/system-auth and add these lines in the appropriate sections:

# auth section (after other auth lines)
auth       optional    pam_gnome_keyring.so

# session section (before session optional pam_systemd.so)
session    optional    pam_gnome_keyring.so start_only

# password section
password   optional    pam_gnome_keyring.so

Edit /etc/pam.d/greetd-greeter and add at the end:

session    optional    pam_gnome_keyring.so start_only

Audio and microphone (PipeWire)

sudo dnf group upgrade multimedia --exclude=PackageKit-gstreamer-plugin
sudo dnf install pipewire pipewire-pulseaudio pipewire-alsa wireplumber alsa-sof-firmware

systemctl --user enable --now pipewire pipewire-pulse wireplumber

Bluetooth

Troubleshooting:

rfkill list
rfkill unblock bluetooth

Battery power profiles

sudo dnf install power-profiles-daemon

Fingerprint

Install:

sudo dnf install fprintd fprintd-pam

Enroll / list fingerprints:

fprintd-list <user>
fprintd-enroll

Enable fingerprint for sudo access:

sudo authselect enable-feature with-fingerprint

Printer

sudo dnf install cups-pk-helper

"Open With" / URL handler

Install the common helper:

sudo dnf install xdg-utils

Set DankMaterialShell’s browser picker (dms-open.desktop) as the default browser handler:

xdg-settings set default-web-browser dms-open.desktop

Other quick checks

  • Keyboard function keys (volume, mute, brightness)
  • Camera
  • Screen sharing / recording
  • External monitor

5) Optional: daily driver packages

Nautilus file manager + quick preview

sudo dnf install nautilus sushi

NOTE: sushi provides quick previews inside Nautilus.

FFmpeg (H.264 codecs)

sudo dnf swap ffmpeg-free ffmpeg --allowerasing

Flatpak + Flathub

sudo dnf install flatpak

# Add Flathub repository for Flatpak packages
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

References

DE
Source

This article was originally published by DEV Community and written by pizidavi.

Read original article on DEV Community
Back to Discover

Reading List