# 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-git` und 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 über `nixos-unstable` + `chaotic-cx/nyx` - `configuration.nix`: Host-spezifische Einstiegsdatei - `modules/base.nix`: Boot, Kernel, Locale, Nix, Firmware, Governor - `modules/packages.nix`: zentraler Ort für eigene Zusatzpakete - `modules/chaotic-nyx.nix`: Chaotic-Nyx Aktivierung, `allowUnfree`, `mesa-git` - `modules/graphics/mesa-amd.nix`: AMDGPU + Mesa/RADV Basis - `modules/graphics/mesa-amd-opencl.nix`: AMD mit AMDVLK + OpenCL/ROCm - `modules/graphics/nvidia.nix`: Nvidia-Treiber Basis mit proprietären Modulen - `modules/graphics/nvidia-open.nix`: Nvidia mit offenen Kernel-Modulen - `modules/audio/pipewire.nix`: PipeWire, JACK, Pulse, Audio-Tools - `modules/gaming.nix`: Steam, Gamescope, Launcher-Stack - `modules/gaming/wine-proton.nix`: Wine-, Proton- und Compatibility-Tools - `modules/desktop/common.nix`: gemeinsame Desktop-Pakete - `modules/desktop/kde.nix`: KDE Plasma 6 + SDDM - `modules/desktop/gnome.nix`: GNOME + GDM - `modules/desktop/budgie.nix`: Budgie - `modules/desktop/hyprland.nix`: Hyprland + SDDM - `modules/peripherals.nix`: RGB-, Maus- und USB-Helfer ## Vorlage anpassen Die wichtigsten Platzhalter stehen direkt in `configuration.nix`: ```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: ```nix 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 ```nix desktopConfig = ./modules/desktop/kde.nix; graphicsConfig = ./modules/graphics/mesa-amd.nix; ``` KDE + AMD mit OpenCL/AMDVLK ```nix desktopConfig = ./modules/desktop/kde.nix; graphicsConfig = ./modules/graphics/mesa-amd-opencl.nix; ``` GNOME + Nvidia ```nix desktopConfig = ./modules/desktop/gnome.nix; graphicsConfig = ./modules/graphics/nvidia.nix; ``` Hyprland + Nvidia ```nix desktopConfig = ./modules/desktop/hyprland.nix; graphicsConfig = ./modules/graphics/nvidia.nix; ``` KDE + Nvidia Open Kernel Module ```nix 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.nix` ist die einfachste und sinnvollste Standardwahl für die meisten Gaming-Systeme mit AMD. - `mesa-amd-opencl.nix` ist 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.nix` ist die Standardwahl für die meisten Systeme, wenn du maximale Kompatibilität mit aktuellen Spielen willst. - `nvidia-open.nix` ist 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.stable` - `winetricks` - `protontricks` - `protonup-qt` - `umu-launcher` - `dxvk` - `vkd3d-proton` - `steam-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 1. Die vom Installer erzeugte `hardware-configuration.nix` nach `./hardware-configuration.nix` kopieren. 2. `hostName`, `userName` und `fullName` in `configuration.nix` anpassen. 3. In `configuration.nix` `desktopConfig` und `graphicsConfig` auf die gewünschten Module setzen. 4. Optional Locale, Tastatur und Zeitzone anpassen. 5. Passwort für den Benutzer setzen: ```bash passwd ``` 6. Flake lock erstellen: ```bash nix flake lock ``` 7. System aktivieren: ```bash 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