惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
B
Blog
D
Docker
C
Check Point Blog
A
About on SuperTechFans
云风的 BLOG
云风的 BLOG
F
Fortinet All Blogs
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog
WordPress大学
WordPress大学
Jina AI
Jina AI
罗磊的独立博客
月光博客
月光博客
博客园 - Franky
L
LangChain Blog
H
Help Net Security
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
小众软件
小众软件
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Minimal Fedora install with Niri + DankMaterialShell
pizidavi · 2026-04-29 · via DEV Community

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

  • 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

Enter fullscreen mode Exit fullscreen mode

Add (or edit) this option:

[main]
max_parallel_downloads=10

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

Update the system:

sudo dnf group upgrade core
sudo dnf upgrade --refresh

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

3) Install Niri + DMS via DankLinux

Run the installer:

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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

Verify:

nmcli device status

Enter fullscreen mode Exit fullscreen mode

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"

Enter fullscreen mode Exit fullscreen mode


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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

Restart the driver:

sudo modprobe -r iwlwifi
sudo modprobe iwlwifi

Enter fullscreen mode Exit fullscreen mode


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

Enter fullscreen mode Exit fullscreen mode

Verify:

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

Enter fullscreen mode Exit fullscreen mode

NVIDIA dGPU

Install NVIDIA drivers from RPM Fusion:

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

Enter fullscreen mode Exit fullscreen mode

Verify PRIME offload rendering:

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

Enter fullscreen mode Exit fullscreen mode

Quick tip

Add a shell alias for easier PRIME offload testing:

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

Enter fullscreen mode Exit fullscreen mode


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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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

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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

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

session    optional    pam_gnome_keyring.so start_only

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

Bluetooth

Troubleshooting:

rfkill list
rfkill unblock bluetooth

Enter fullscreen mode Exit fullscreen mode

Battery power profiles

sudo dnf install power-profiles-daemon

Enter fullscreen mode Exit fullscreen mode

Fingerprint

Install:

sudo dnf install fprintd fprintd-pam

Enter fullscreen mode Exit fullscreen mode

Enroll / list fingerprints:

fprintd-list <user>
fprintd-enroll

Enter fullscreen mode Exit fullscreen mode

Enable fingerprint for sudo access:

sudo authselect enable-feature with-fingerprint

Enter fullscreen mode Exit fullscreen mode

Printer

sudo dnf install cups-pk-helper

Enter fullscreen mode Exit fullscreen mode

"Open With" / URL handler

Install the common helper:

sudo dnf install xdg-utils

Enter fullscreen mode Exit fullscreen mode

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

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

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

NOTE: sushi provides quick previews inside Nautilus.

FFmpeg (H.264 codecs)

sudo dnf swap ffmpeg-free ffmpeg --allowerasing

Enter fullscreen mode Exit fullscreen mode

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

Enter fullscreen mode Exit fullscreen mode

References