NixOS Gaming Base
Diese Basis-Config ist als wiederverwendbare Vorlage für ein NixOS-Gaming-Desktop-System gedacht und nutzt nixos-unstable, Chaotic-Nyx und getrennte Desktop-/Treiber-Configs. Fokus:
- aktueller Kernel
- umschaltbare Grafik-Configs für AMD oder Nvidia
- Chaotic
mesa-gitund 32-Bit-Libs für Steam/Proton - PipeWire + Gaming-/Desktop-Audio-Tools
- Steam, Gamescope, MangoHud, Lutris, Heroic, LACT
- Basis für RGB- und Gaming-Peripherie
- Desktop-Auswahl zwischen KDE, GNOME, Budgie und Hyprland
Struktur
flake.nix: Einstieg übernixos-unstable+chaotic-cx/nyxconfiguration.nix: Host-spezifische Einstiegsdateimodules/base.nix: Boot, Kernel, Locale, Nix, Firmware, Governormodules/packages.nix: zentraler Ort für eigene Zusatzpaketemodules/chaotic-nyx.nix: Chaotic-Nyx Aktivierung,allowUnfree,mesa-gitmodules/graphics/mesa-amd.nix: AMDGPU + Mesa/RADV Basismodules/graphics/mesa-amd-opencl.nix: AMD mit AMDVLK + OpenCL/ROCmmodules/graphics/nvidia.nix: Nvidia-Treiber Basis mit proprietären Modulenmodules/graphics/nvidia-open.nix: Nvidia mit offenen Kernel-Modulenmodules/audio/pipewire.nix: PipeWire, JACK, Pulse, Audio-Toolsmodules/gaming.nix: Steam, Gamescope, Launcher-Stackmodules/gaming/wine-proton.nix: Wine-, Proton- und Compatibility-Toolsmodules/desktop/common.nix: gemeinsame Desktop-Paketemodules/desktop/kde.nix: KDE Plasma 6 + SDDMmodules/desktop/gnome.nix: GNOME + GDMmodules/desktop/budgie.nix: Budgiemodules/desktop/hyprland.nix: Hyprland + SDDMmodules/peripherals.nix: RGB-, Maus- und USB-Helfer
Vorlage anpassen
Die wichtigsten Platzhalter stehen direkt in configuration.nix:
hostName = "example-host";
userName = "gamer";
fullName = "Gaming User";
Passe diese Werte vor dem ersten Build an. In modules/base.nix sind UTC, en_US.UTF-8 und us als neutrale Defaults gesetzt und können ebenfalls überschrieben werden.
Zusätzliche allgemeine Pakete kannst du in modules/packages.nix eintragen.
Desktop und GPU auswählen
Die Auswahl passiert direkt oben in configuration.nix. Du änderst nur diese beiden Zeilen:
desktopConfig = ./modules/desktop/kde.nix;
graphicsConfig = ./modules/graphics/mesa-amd.nix;
Für den Desktop sind diese Werte möglich:
./modules/desktop/kde.nix./modules/desktop/gnome.nix./modules/desktop/budgie.nix./modules/desktop/hyprland.nix
Für die GPU bzw. den Treiber sind diese Werte möglich:
./modules/graphics/mesa-amd.nix./modules/graphics/mesa-amd-opencl.nix./modules/graphics/nvidia.nix./modules/graphics/nvidia-open.nix
Beispiele:
KDE + AMD
desktopConfig = ./modules/desktop/kde.nix;
graphicsConfig = ./modules/graphics/mesa-amd.nix;
KDE + AMD mit OpenCL/AMDVLK
desktopConfig = ./modules/desktop/kde.nix;
graphicsConfig = ./modules/graphics/mesa-amd-opencl.nix;
GNOME + Nvidia
desktopConfig = ./modules/desktop/gnome.nix;
graphicsConfig = ./modules/graphics/nvidia.nix;
Hyprland + Nvidia
desktopConfig = ./modules/desktop/hyprland.nix;
graphicsConfig = ./modules/graphics/nvidia.nix;
KDE + Nvidia Open Kernel Module
desktopConfig = ./modules/desktop/kde.nix;
graphicsConfig = ./modules/graphics/nvidia-open.nix;
Es wird dabei immer genau ein Desktop-Modul und genau ein Grafik-Modul importiert, nicht alle auf einmal.
In modules/graphics/nvidia.nix sind modesetting, nvidiaSettings und nvidiaPackages.latest bereits gesetzt.
Empfehlung für AMD
mesa-amd.nixist die einfachste und sinnvollste Standardwahl für die meisten Gaming-Systeme mit AMD.mesa-amd-opencl.nixist interessant, wenn du zusätzlich OpenCL/ROCm brauchst oder explizit AMDVLK testen willst.- Wenn du nur spielen willst und keinen speziellen Compute- oder Vulkan-Workaround brauchst, nimm zuerst
mesa-amd.nix.
Empfehlung für Nvidia
nvidia.nixist die Standardwahl für die meisten Systeme, wenn du maximale Kompatibilität mit aktuellen Spielen willst.nvidia-open.nixist für Systeme gedacht, auf denen du die offenen Nvidia-Kernel-Module nutzen möchtest.- Wenn du nicht gezielt testen willst, nimm zuerst
nvidia.nix.
Wine und Proton
Die Wine-/Proton-Helfer liegen jetzt in modules/gaming/wine-proton.nix und werden automatisch über modules/gaming.nix importiert.
Enthalten sind aktuell:
wineWowPackages.stablewinetricksprotontricksprotonup-qtumu-launcherdxvkvkd3d-protonsteam-run
Damit hast du direkt die typischen Werkzeuge für:
- Steam Proton mit
protontricks - zusätzliche Compatibility Tools über
protonup-qt - Wine-/Non-Steam-Starts über
umu-launcher - manuelles Debugging und Prefix-Arbeit mit
winetricks
Chaotic-Nyx Hinweis
Die Flake bindet github:chaotic-cx/nyx/nyxpkgs-unstable direkt ein und importiert
chaotic.nixosModules.default.
modules/chaotic-nyx.nix aktiviert chaotic.mesa-git.enable = true;.
Nach der Installation
- Die vom Installer erzeugte
hardware-configuration.nixnach./hardware-configuration.nixkopieren. hostName,userNameundfullNameinconfiguration.nixanpassen.- In
configuration.nixdesktopConfigundgraphicsConfigauf die gewünschten Module setzen. - Optional Locale, Tastatur und Zeitzone anpassen.
- Passwort für den Benutzer setzen:
passwd <dein-userName>
- Flake lock erstellen:
nix flake lock
- System aktivieren:
sudo nixos-rebuild switch --flake .#template
Späterer Ausbau
- Desktop-spezifische Pakete und Defaults weiter tunen, z. B. Autologin, Keyring-Policy, Flatpak
- OBS / Discord / OpenRGB-Profile / Fancontrol
- Btrfs-Subvolumes, Snapshots, Impermanence
- spezielle Kernel- oder Scheduler-Tweaks, falls du sie wirklich brauchst