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:
- Select your language
- Set your keyboard layout
- In Software Selection, pick the minimal/custom option (keep it minimal)
- Configure the disk (choose your layout — Btrfs is a solid default)
- 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:
- Niri as Window Manager
- Alacritty as terminal emulator
-
dms-greeter as display manager/greeter (a
greetdgreeter)
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
- Fedora Everything ISO: https://fedoraproject.org/misc/#everything
- DankLinux docs: https://danklinux.com/docs
- Arch Wiki (for general Linux concepts): https://wiki.archlinux.org/
- AI is your best friend!
This article was originally published by DEV Community and written by pizidavi.
Read original article on DEV Community