This commit is contained in:
2026-06-10 19:59:29 +02:00
parent bb427145df
commit 118a00f6d7
7 changed files with 163 additions and 21 deletions
+81 -13
View File
@@ -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/packages.nix`: zentraler Ort für eigene Zusatzpakete
- `modules/chaotic-nyx.nix`: Chaotic-Nyx Aktivierung, `allowUnfree`, `mesa-git` - `modules/chaotic-nyx.nix`: Chaotic-Nyx Aktivierung, `allowUnfree`, `mesa-git`
- `modules/graphics/mesa-amd.nix`: AMDGPU + Mesa/RADV Basis - `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/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/common.nix`: gemeinsame Desktop-Pakete
- `modules/desktop/kde.nix`: KDE Plasma 6 + SDDM - `modules/desktop/kde.nix`: KDE Plasma 6 + SDDM
- `modules/desktop/gnome.nix`: GNOME + GDM - `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. 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. 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 ```nix
desktopConfig = ./modules/desktop/kde.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/kde.nix`
- `./modules/desktop/gnome.nix` - `./modules/desktop/gnome.nix`
- `./modules/desktop/budgie.nix` - `./modules/desktop/budgie.nix`
- `./modules/desktop/hyprland.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 ```nix
desktopConfig = ./modules/desktop/kde.nix;
graphicsConfig = ./modules/graphics/mesa-amd.nix; graphicsConfig = ./modules/graphics/mesa-amd.nix;
``` ```
Mögliche Werte sind: KDE + AMD mit OpenCL/AMDVLK
- `./modules/graphics/mesa-amd.nix` ```nix
- `./modules/graphics/nvidia.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 ## 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. 1. Die vom Installer erzeugte `hardware-configuration.nix` nach `./hardware-configuration.nix` kopieren.
2. `hostName`, `userName` und `fullName` in `configuration.nix` anpassen. 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. 4. Optional Locale, Tastatur und Zeitzone anpassen.
5. Passwort für den Benutzer setzen: 5. Passwort für den Benutzer setzen:
+6 -2
View File
@@ -5,14 +5,18 @@ let
userName = "gamer"; userName = "gamer";
fullName = "Gaming User"; fullName = "Gaming User";
# Desktop-Auswahl: # Desktop auswählen, indem du genau diese Zeile änderst:
# ./modules/desktop/kde.nix
# ./modules/desktop/gnome.nix # ./modules/desktop/gnome.nix
# ./modules/desktop/budgie.nix # ./modules/desktop/budgie.nix
# ./modules/desktop/hyprland.nix # ./modules/desktop/hyprland.nix
desktopConfig = ./modules/desktop/kde.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.nix
# ./modules/graphics/nvidia-open.nix
graphicsConfig = ./modules/graphics/mesa-amd.nix; graphicsConfig = ./modules/graphics/mesa-amd.nix;
in in
+4 -6
View File
@@ -1,6 +1,10 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
imports = [
./gaming/wine-proton.nix
];
programs = { programs = {
appimage = { appimage = {
enable = true; enable = true;
@@ -14,7 +18,6 @@
dedicatedServer.openFirewall = true; dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true; localNetworkGameTransfers.openFirewall = true;
gamescopeSession.enable = true; gamescopeSession.enable = true;
protontricks.enable = true;
}; };
}; };
@@ -23,13 +26,8 @@
gamemode gamemode
goverlay goverlay
heroic heroic
lact
lutris lutris
mangohud mangohud
prismlauncher prismlauncher
protontricks
steam-run
wineWowPackages.stable
winetricks
]; ];
} }
+20
View File
@@ -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";
};
}
+29
View File
@@ -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
];
}
+1
View File
@@ -9,6 +9,7 @@
services.xserver.videoDrivers = [ "amdgpu" ]; services.xserver.videoDrivers = [ "amdgpu" ];
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
lact
mesa-demos mesa-demos
vulkan-tools vulkan-tools
]; ];
+22
View File
@@ -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
];
}