diff --git a/README.md b/README.md index 27b104a..3b49d02 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,12 @@ Diese Basis-Config ist als wiederverwendbare Vorlage für ein NixOS-Gaming-Deskt - `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/nvidia.nix`: Nvidia-Treiber 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, Wine/Launcher-Stack +- `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 @@ -41,37 +44,102 @@ 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 auswählen +## Desktop und GPU auswählen -Die Auswahl passiert zentral in `configuration.nix` über `desktopConfig`: +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; ``` -Mögliche Werte sind: +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` -Es wird damit immer genau ein Desktop-Modul importiert, nicht alle auf einmal. +Für die GPU bzw. den Treiber sind diese Werte möglich: -## Grafiktreiber auswählen +- `./modules/graphics/mesa-amd.nix` +- `./modules/graphics/mesa-amd-opencl.nix` +- `./modules/graphics/nvidia.nix` +- `./modules/graphics/nvidia-open.nix` -Die Grafik-Konfiguration läuft genauso über `graphicsConfig`: +Beispiele: + +KDE + AMD ```nix +desktopConfig = ./modules/desktop/kde.nix; graphicsConfig = ./modules/graphics/mesa-amd.nix; ``` -Mögliche Werte sind: +KDE + AMD mit OpenCL/AMDVLK -- `./modules/graphics/mesa-amd.nix` -- `./modules/graphics/nvidia.nix` +```nix +desktopConfig = ./modules/desktop/kde.nix; +graphicsConfig = ./modules/graphics/mesa-amd-opencl.nix; +``` -In `modules/graphics/nvidia.nix` sind `modesetting`, `nvidiaSettings` und das stabile Treiberpaket bereits gesetzt. +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 @@ -83,7 +151,7 @@ Die Flake bindet `github:chaotic-cx/nyx/nyxpkgs-unstable` direkt ein und importi 1. Die vom Installer erzeugte `hardware-configuration.nix` nach `./hardware-configuration.nix` kopieren. 2. `hostName`, `userName` und `fullName` in `configuration.nix` anpassen. -3. Gewünschten Desktop und ggf. Grafiktreiber in `configuration.nix` auswählen. +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: diff --git a/configuration.nix b/configuration.nix index 76b2793..b961812 100644 --- a/configuration.nix +++ b/configuration.nix @@ -5,14 +5,18 @@ let userName = "gamer"; fullName = "Gaming User"; - # Desktop-Auswahl: + # Desktop auswählen, indem du genau diese Zeile änderst: + # ./modules/desktop/kde.nix # ./modules/desktop/gnome.nix # ./modules/desktop/budgie.nix # ./modules/desktop/hyprland.nix desktopConfig = ./modules/desktop/kde.nix; - # Grafiktreiber-Auswahl: + # GPU/Treiber auswählen, indem du genau diese Zeile änderst: + # ./modules/graphics/mesa-amd.nix + # ./modules/graphics/mesa-amd-opencl.nix # ./modules/graphics/nvidia.nix + # ./modules/graphics/nvidia-open.nix graphicsConfig = ./modules/graphics/mesa-amd.nix; in diff --git a/modules/gaming.nix b/modules/gaming.nix index 745d9de..4877f7b 100644 --- a/modules/gaming.nix +++ b/modules/gaming.nix @@ -1,6 +1,10 @@ { pkgs, ... }: { + imports = [ + ./gaming/wine-proton.nix + ]; + programs = { appimage = { enable = true; @@ -14,7 +18,6 @@ dedicatedServer.openFirewall = true; localNetworkGameTransfers.openFirewall = true; gamescopeSession.enable = true; - protontricks.enable = true; }; }; @@ -23,13 +26,8 @@ gamemode goverlay heroic - lact lutris mangohud prismlauncher - protontricks - steam-run - wineWowPackages.stable - winetricks ]; } diff --git a/modules/gaming/wine-proton.nix b/modules/gaming/wine-proton.nix new file mode 100644 index 0000000..f6c596c --- /dev/null +++ b/modules/gaming/wine-proton.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: + +{ + programs.steam.protontricks.enable = true; + + environment.systemPackages = with pkgs; [ + dxvk + protontricks + protonplus + steam-run + umu-launcher + vkd3d-proton + wineWowPackages.stable + winetricks + ]; + + environment.sessionVariables = { + STEAM_EXTRA_COMPAT_TOOLS_PATHS = "$HOME/.steam/root/compatibilitytools.d"; + }; +} diff --git a/modules/graphics/mesa-amd-opencl.nix b/modules/graphics/mesa-amd-opencl.nix new file mode 100644 index 0000000..96c7ec3 --- /dev/null +++ b/modules/graphics/mesa-amd-opencl.nix @@ -0,0 +1,29 @@ +{ pkgs, ... }: + +{ + hardware.graphics = { + enable = true; + enable32Bit = true; + extraPackages = [ + pkgs.amdvlk + pkgs.rocmPackages.clr + pkgs.rocmPackages.clr.icd + ]; + extraPackages32 = [ + pkgs.driversi686Linux.amdvlk + ]; + }; + + services.xserver.videoDrivers = [ "amdgpu" ]; + + hardware.amdgpu = { + initrd.enable = true; + opencl.enable = true; + }; + + environment.systemPackages = with pkgs; [ + lact + mesa-demos + vulkan-tools + ]; +} diff --git a/modules/graphics/mesa-amd.nix b/modules/graphics/mesa-amd.nix index 87bf101..fc39883 100644 --- a/modules/graphics/mesa-amd.nix +++ b/modules/graphics/mesa-amd.nix @@ -9,6 +9,7 @@ services.xserver.videoDrivers = [ "amdgpu" ]; environment.systemPackages = with pkgs; [ + lact mesa-demos vulkan-tools ]; diff --git a/modules/graphics/nvidia-open.nix b/modules/graphics/nvidia-open.nix new file mode 100644 index 0000000..5d05c2e --- /dev/null +++ b/modules/graphics/nvidia-open.nix @@ -0,0 +1,22 @@ +{ config, pkgs, ... }: + +{ + hardware.graphics = { + enable = true; + enable32Bit = true; + }; + + services.xserver.videoDrivers = [ "nvidia" ]; + + hardware.nvidia = { + modesetting.enable = true; + nvidiaSettings = true; + open = true; + package = config.boot.kernelPackages.nvidiaPackages.latest; + }; + + environment.systemPackages = with pkgs; [ + mesa-demos + vulkan-tools + ]; +}