diff --git a/README.md b/README.md index bb15459..4abbb29 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,14 @@ Diese Basis-Config ist für ein Desktop-System mit - Intel Core i9-13900KF - AMD Radeon RX 9070 XT -ausgelegt und nutzt jetzt `nixos-unstable`, `Chaotic-Nyx` und COSMIC als Wayland-Desktop. Fokus: +ausgelegt und nutzt `nixos-unstable`, `Chaotic-Nyx` und eine waehlbare Desktop-Umgebung. Fokus: - aktueller Kernel - AMD-Grafik mit Chaotic `mesa-git` und 32-Bit-Libs für Steam/Proton - PipeWire + Gaming-/Desktop-Audio-Tools - Steam, Gamescope, MangoHud, Lutris, Heroic, LACT -- RGB- und Peripherie-Basis für deine USB-Geräte +- RGB- und Peripherie-Basis fuer deine USB-Geraete +- Desktop-Auswahl zwischen KDE, GNOME, Budgie und Hyprland ## Struktur @@ -22,7 +23,11 @@ ausgelegt und nutzt jetzt `nixos-unstable`, `Chaotic-Nyx` und COSMIC als Wayland - `modules/graphics/mesa-amd.nix`: AMDGPU + Mesa/RADV Basis - `modules/audio/pipewire.nix`: PipeWire, JACK, Pulse, Audio-Tools - `modules/gaming.nix`: Steam, Gamescope, Wine/Launcher-Stack -- `modules/desktop/cosmic.nix`: COSMIC Desktop + COSMIC Greeter +- `modules/desktop/default.nix`: Desktop-Auswahl ueber `profiles.desktop` +- `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`: OpenRGB, Logitech/Corsair-nahe Tools, USB-Helfer ## USB-Bezug @@ -36,13 +41,28 @@ Die Config berücksichtigt diese aktuell erkannten Geräte: Daraus folgen aktuell: -- `openrgb` + `hardware.i2c.enable` für RGB-/Board-Zugriff -- `ratbagd` + `piper` für Logitech-Gaming-Peripherie -- `solaar`, `usbutils`, `pciutils` für Device-Handling und Diagnose +- `openrgb` + `hardware.i2c.enable` fuer RGB-/Board-Zugriff +- `ratbagd` + `piper` fuer Logitech-Gaming-Peripherie +- `solaar`, `usbutils`, `pciutils` fuer Device-Handling und Diagnose - PipeWire-Setup für das Scarlett Solo -- COSMIC als Wayland-Desktop mit `cosmic-greeter` +- waehlbarer Desktop via `profiles.desktop` - Chaotic `mesa-git` mit Fallback-Spezialisierung `stable-mesa` +## Desktop auswaehlen + +Die Auswahl passiert zentral in `configuration.nix`: + +```nix +profiles.desktop = "kde"; +``` + +Gueltige Werte sind: + +- `"kde"` +- `"gnome"` +- `"budgie"` +- `"hyprland"` + ## Chaotic-Nyx Hinweis Die Flake bindet `github:chaotic-cx/nyx/nyxpkgs-unstable` direkt ein und importiert @@ -53,19 +73,20 @@ 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. Falls nötig `users.users.max` und `networking.hostName` in `configuration.nix` anpassen. -3. Passwort für den Benutzer setzen: +3. Gewuenschten Desktop ueber `profiles.desktop` in `configuration.nix` setzen. +4. Passwort fuer den Benutzer setzen: ```bash passwd max ``` -4. Flake lock erstellen: +5. Flake lock erstellen: ```bash nix flake lock ``` -5. System aktivieren: +6. System aktivieren: ```bash sudo nixos-rebuild switch --flake .#nixos-gaming @@ -73,7 +94,7 @@ sudo nixos-rebuild switch --flake .#nixos-gaming ## Späterer Ausbau -- COSMIC weiter tunen, z. B. Autologin, Keyring-Policy, Flatpak +- 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 diff --git a/configuration.nix b/configuration.nix index a4efc76..c69264a 100644 --- a/configuration.nix +++ b/configuration.nix @@ -7,13 +7,16 @@ ./modules/audio/pipewire.nix ./modules/chaotic-nyx.nix ./modules/graphics/mesa-amd.nix - ./modules/desktop/cosmic.nix + ./modules/desktop ./modules/gaming.nix ./modules/peripherals.nix ]; networking.hostName = "nixos-gaming"; + profiles.desktop = "kde"; + # Moegliche Werte: "kde" "gnome" "budgie" "hyprland" + users.users.max = { isNormalUser = true; description = "max"; diff --git a/modules/desktop/budgie.nix b/modules/desktop/budgie.nix new file mode 100644 index 0000000..f17f0dc --- /dev/null +++ b/modules/desktop/budgie.nix @@ -0,0 +1,8 @@ +{ config, lib, ... }: + +{ + config = lib.mkIf (config.profiles.desktop == "budgie") { + services.xserver.enable = true; + services.desktopManager.budgie.enable = true; + }; +} diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix new file mode 100644 index 0000000..94b1add --- /dev/null +++ b/modules/desktop/default.nix @@ -0,0 +1,28 @@ +{ lib, pkgs, ... }: + +{ + imports = [ + ./budgie.nix + ./gnome.nix + ./hyprland.nix + ./kde.nix + ]; + + options.profiles.desktop = lib.mkOption { + type = lib.types.enum [ + "kde" + "gnome" + "budgie" + "hyprland" + ]; + default = "kde"; + example = "hyprland"; + description = "Waehlt die Desktop-Umgebung fuer dieses System aus."; + }; + + config.environment.systemPackages = with pkgs; [ + seahorse + wayland-utils + wl-clipboard + ]; +} diff --git a/modules/desktop/gnome.nix b/modules/desktop/gnome.nix new file mode 100644 index 0000000..095d00c --- /dev/null +++ b/modules/desktop/gnome.nix @@ -0,0 +1,13 @@ +{ config, lib, pkgs, ... }: + +{ + config = lib.mkIf (config.profiles.desktop == "gnome") { + services.xserver.enable = true; + services.displayManager.gdm.enable = true; + services.desktopManager.gnome.enable = true; + + environment.systemPackages = with pkgs; [ + gnome-tweaks + ]; + }; +} diff --git a/modules/desktop/hyprland.nix b/modules/desktop/hyprland.nix new file mode 100644 index 0000000..acd936b --- /dev/null +++ b/modules/desktop/hyprland.nix @@ -0,0 +1,22 @@ +{ config, lib, pkgs, ... }: + +{ + config = lib.mkIf (config.profiles.desktop == "hyprland") { + services.displayManager.sddm = { + enable = true; + wayland.enable = true; + }; + + programs.hyprland = { + enable = true; + withUWSM = true; + }; + + environment.systemPackages = with pkgs; [ + dunst + kitty + waybar + wofi + ]; + }; +} diff --git a/modules/desktop/kde.nix b/modules/desktop/kde.nix new file mode 100644 index 0000000..6e501ac --- /dev/null +++ b/modules/desktop/kde.nix @@ -0,0 +1,14 @@ +{ config, lib, ... }: + +{ + config = lib.mkIf (config.profiles.desktop == "kde") { + services.xserver.enable = true; + + services.displayManager.sddm = { + enable = true; + wayland.enable = true; + }; + + services.desktopManager.plasma6.enable = true; + }; +}