diff --git a/README.md b/README.md index 33292d5..8c731d5 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,17 @@ Diese Basis-Config ist als wiederverwendbare Vorlage für ein NixOS-Gaming-Deskt - Basis für RGB- und Gaming-Peripherie - Desktop-Auswahl zwischen KDE, GNOME, Budgie, Hyprland und COSMIC +## Dokumentation + +- [SETUP_FUER_FREUNDE.md](docs/SETUP_FUER_FREUNDE.md): Einstieg und kompletter Setup-Prozess +- [CACHIX_ANLEITUNG.md](docs/CACHIX_ANLEITUNG.md): Cachix und schnellere Builds +- [GAMING_CUSTOMIZATION_GUIDE.md](docs/GAMING_CUSTOMIZATION_GUIDE.md): Gaming, Steam, Proton und Desktop-Anpassung +- [MESA_GIT_ANLEITUNG.md](docs/MESA_GIT_ANLEITUNG.md): Mesa-Git und GPU-Treiber +- [COSMIC_SETUP_ANLEITUNG.md](docs/COSMIC_SETUP_ANLEITUNG.md): COSMIC Desktop +- [KERNEL_GAMING_TWEAKS.md](docs/KERNEL_GAMING_TWEAKS.md): Kernel-Auswahl und Performance +- [PODMAN_DISTROBOX.md](docs/PODMAN_DISTROBOX.md): Podman und Distrobox +- [UPDATER_ANLEITUNG.md](docs/UPDATER_ANLEITUNG.md): `nixos-update` + ## Struktur - `flake.nix`: Einstieg über `nixos-unstable` + `chaotic-cx/nyx` @@ -75,7 +86,7 @@ fullName = "Euer Name"; # z.B. "Max Mustermann" ```nix desktopConfig = ./modules/desktop/kde.nix; # oder: cosmic-max.nix, gnome.nix, hyprland.nix graphicsConfig = ./modules/graphics/mesa-amd.nix; # oder: nvidia.nix, nvidia-open.nix, mesa-amd-opencl.nix -kernelConfig = ./modules/kernel/linux-cachyos.nix; # oder: linux-zen.nix, linux-default.nix +kernelConfig = ./modules/kernel/linux-cachyos.nix; # oder: linux-zen.nix, linux-xanmod.nix, linux-default.nix enableExtraGamingTweaks = true; # false für konservativere Defaults ``` @@ -99,6 +110,7 @@ Das war's! Nach dem Neustart startet euer neues System. - **Gaming-Setup & Customization**: Siehe [`docs/GAMING_CUSTOMIZATION_GUIDE.md`](docs/GAMING_CUSTOMIZATION_GUIDE.md) - **Zu COSMIC wechseln**: Siehe [`docs/COSMIC_SETUP_ANLEITUNG.md`](docs/COSMIC_SETUP_ANLEITUNG.md) - **Mehr Pakete installieren**: Edit `modules/packages.nix` +- **Update-Befehl nutzen**: `nixos-update`, `nixos-update boot` oder `nixos-update update-inputs` ## Vorlage anpassen @@ -300,85 +312,6 @@ nix flake update sudo nixos-rebuild switch --flake .#template ``` -## Dokumentation & Guides - -Alle Guides sind im `docs/`-Verzeichnis. Wähle basierend auf deinem Bedarf: - -### 🚀 **[SETUP_FUER_FREUNDE.md](docs/SETUP_FUER_FREUNDE.md)** – Hier anfangen! -Komplette Schritt-für-Schritt Anleitung für alle, die dieses Repo nutzen möchten: -- Was beim Klonen passiert -- Warum `flake.lock` im Repo mit versioniert ist -- `nixos-unstable` vs `nixos-stable` erklärt -- Kompletter Setup-Prozess (Phase 1-4) -- Häufige Probleme & Lösungen -- **👉 Hier sollten Freunde ZUERST nachschauen!** - -### 🏎️ **[CACHIX_ANLEITUNG.md](docs/CACHIX_ANLEITUNG.md)** – Schnellere Builds -Wie Cachix & vorkompilierte Pakete funktionieren: -- Was ist Cachix? (vorkompilierte Binaries) -- Warum ist es im Repo aktiviert? -- Performance: 90 Min → 15-30 Min (4-6x schneller!) -- Cache-Status prüfen -- Optional: Eigene Caches erstellen -- **👉 Wichtig zu wissen für schnellere Builds!** - -### 🎮 **[GAMING_CUSTOMIZATION_GUIDE.md](docs/GAMING_CUSTOMIZATION_GUIDE.md)** – Gaming & Anpassung -Alles zum Gaming-Setup und Desktop-Customization: -- Steam & Proton einrichten -- GameMode & Performance-Tools -- Desktop-spezifische Customization (KDE, GNOME, Hyprland, COSMIC) -- Performance-Optimierungen -- Troubleshooting Spiele-Probleme -- **👉 Nachdem das System läuft, hier Tipps holen!** - -### 🚀 **[MESA_GIT_ANLEITUNG.md](docs/MESA_GIT_ANLEITUNG.md)** – GPU-Treiber -Erklärung von Mesa-Git (neueste GPU-Treiber): -- Was ist Mesa-Git? (Tägliche GPU-Treiber-Updates) -- Warum es in der Config ist -- Wie man es aktiviert/deaktiviert -- Fallback-Specialisation (Auto-Fallback bei Crashes) -- Performance-Unterschiede -- Für welche GPUs geeignet (AMD ja, NVIDIA nein) -- **👉 Für AMD-Nutzer interessant, NVIDIA-Nutzer können skippen!** - -### 🌀 **[COSMIC_SETUP_ANLEITUNG.md](docs/COSMIC_SETUP_ANLEITUNG.md)** – COSMIC Desktop -Spezielle Anleitung für den Umstieg zu COSMIC DE: -- Installation & erste Einrichtung -- Gaming-Setup mit COSMIC -- Customization (Themes, Shortcuts, Tools) -- Troubleshooting -- **👉 Nur wenn ihr zu COSMIC wechseln möchtet!** - -### ⚙️ **[KERNEL_GAMING_TWEAKS.md](docs/KERNEL_GAMING_TWEAKS.md)** – Kernel & Performance -Kernel-Auswahl und Gaming-Optimierungen: -- Linux Default, Zen, Hardened erklärt -- Kernel wechseln -- Gaming-Tweaks (CPU-Governor, Network-Buffer, etc.) -- Performance-Vergleich -- **👉 Für maximale Gaming-Performance!** - -### 📦 **[PODMAN_DISTROBOX.md](docs/PODMAN_DISTROBOX.md)** – Container -Podman & Distrobox für Container-Workloads: -- Was ist Podman? (Docker-Ersatz) -- Was ist Distrobox? (einfache Container) -- Praktische Beispiele -- Troubleshooting -- **👉 Falls du Container brauchst (nicht für Gaming!)** - ---- - -## Schnelle Orientierung - -| Situation | Lies das... | -|-----------|-----------| -| Bin neu und weiß nicht, wo anfangen | SETUP_FUER_FREUNDE.md | -| Mein Build dauert zu lange | CACHIX_ANLEITUNG.md | -| Ich will zocken / customizen | GAMING_CUSTOMIZATION_GUIDE.md | -| Fragen zu GPU-Treibern | MESA_GIT_ANLEITUNG.md | -| Ich möchte zu COSMIC wechseln | COSMIC_SETUP_ANLEITUNG.md | -| Ich will Kernel / Gaming-Performance optimieren | KERNEL_GAMING_TWEAKS.md | -| Ich brauche Container (Podman/Distrobox) | PODMAN_DISTROBOX.md | - ## Späterer Ausbau - Desktop-spezifische Pakete und Defaults weiter tunen, z. B. Autologin, Keyring-Policy, Flatpak diff --git a/configuration.nix b/configuration.nix index ac4ef9b..ebdd8db 100644 --- a/configuration.nix +++ b/configuration.nix @@ -26,6 +26,7 @@ let # ./modules/kernel/linux-zen.nix (Gaming optimiert, empfohlen) # ./modules/kernel/linux-hardened.nix (Security, langsamer) # ./modules/kernel/linux-cachyos.nix + # ./modules/kernel/linux-xanmod.nix (experimentell, aggressiver) kernelConfig = ./modules/kernel/linux-cachyos.nix; # Zusätzliche Gaming-Tweaks aktivieren/deaktivieren. @@ -37,6 +38,7 @@ in ./hardware-configuration.nix ./modules/base.nix ./modules/packages.nix + ./modules/updater.nix ./modules/audio/pipewire.nix ./modules/chaotic-nyx.nix graphicsConfig diff --git a/docs/CACHIX_ANLEITUNG.md b/docs/CACHIX_ANLEITUNG.md index dec8bf2..4611818 100644 --- a/docs/CACHIX_ANLEITUNG.md +++ b/docs/CACHIX_ANLEITUNG.md @@ -10,16 +10,16 @@ Wie du Cachix nutzt, um deine NixOS-Builds massiv zu beschleunigen. Statt alles selbst zu kompilieren: ``` -❌ Kompilieren (1-2 Stunden): +Kompilieren (1-2 Stunden): gcc + glibc + steam + mesa + ... = sehr lange -✅ Mit Cachix (10-30 Min): +Mit Cachix (10-30 Min): Download vorkompilierte Binaries = schnell! ``` --- -## Cachix bereits im Repo aktiviert! ✅ +## Cachix bereits im Repo aktiviert! Dieses Template nutzt bereits **Chaotic-Nyx Cachix**: @@ -36,9 +36,9 @@ nixConfig = { ``` **Was das bedeutet:** -- ✅ `substituters` = Wo Binaries runterladen -- ✅ `trusted-public-keys` = Sichere Signatur für Cache -- ✅ Automatisch aktiviert, kein Setup nötig! +- `substituters` = Wo Binaries runterladen +- `trusted-public-keys` = Sichere Signatur für Cache +- Automatisch aktiviert, kein Setup nötig! **Performance-Gewinn:** ``` @@ -98,7 +98,7 @@ nixConfig = { Falls ihr später selbst Caches hinzufügen wollt: -### Methode 1: In `flake.nix` (für dieses Repo) ✅ +### Methode 1: In `flake.nix` (für dieses Repo) Wir nutzen das schon: ```nix @@ -367,10 +367,10 @@ df -h /nix | Punkt | Status | |-------|--------| -| **Cachix aktiv?** | ✅ Ja (Chaotic-Nyx) | -| **Automatisch?** | ✅ Ja, kein Setup nötig | -| **Performance-Gewinn** | ✅ 4-6x schneller | -| **Sicher?** | ✅ Ja, signierte Pakete | -| **Für Freunde wichtig?** | ✅ Ja, erspart viel Build-Zeit | +| **Cachix aktiv?** | Ja (Chaotic-Nyx) | +| **Automatisch?** | Ja, kein Setup nötig | +| **Performance-Gewinn** | 4-6x schneller | +| **Sicher?** | Ja, signierte Pakete | +| **Für Freunde wichtig?** | Ja, erspart viel Build-Zeit | -**Cachix ist schon aktiviert – einfach genießen!** 🚀 +**Cachix ist schon aktiviert – einfach genießen!** diff --git a/docs/COSMIC_SETUP_ANLEITUNG.md b/docs/COSMIC_SETUP_ANLEITUNG.md index c248d30..963f964 100644 --- a/docs/COSMIC_SETUP_ANLEITUNG.md +++ b/docs/COSMIC_SETUP_ANLEITUNG.md @@ -4,7 +4,7 @@ Anleitung zum Wechsel von deinem aktuellen NixOS 26.05 Setup zu COSMIC Desktop E ## Voraussetzungen -- NixOS 26.05 installiert (✅ dein aktueller Stand) +- NixOS 26.05 installiert ( dein aktueller Stand) - Zugriff auf Terminal/SSH - Die Dateien im `~/nixos-config` Verzeichnis @@ -52,7 +52,7 @@ desktopConfig = ./modules/desktop/cosmic-max.nix; ## Schritt 3: Optional - GPU-Treiber überprüfen -Für COSMIC empfohlen: AMD-Treiber oder NVIDIA 550+ +Für COSMIC empfohlen: AMD-Treiber oder NVIDIA 550+ **Aktuelle Einstellung überprüfen** (Zeile 20): ```nix @@ -74,7 +74,7 @@ Die `flake.nix` braucht keinen Umbau - sie hat schon alles für COSMIC: cat ~/nixos-config/flake.nix ``` -✅ Sollte enthalten: + Sollte enthalten: - `chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"` (für aktuelle Pakete) - Extra Substituter für `nyx-cache.chaotic.cx` @@ -265,14 +265,14 @@ A: Nein! `nixos-rebuild switch` ist nicht-destruktiv. Alte Konfigurationen bleib A: 5-30 Minuten. Hängt ab von: Internet, CPU, HDD/SSD, Cachegröße. **F: Kann ich zwischendurch abbrechen?** -A: ⚠️ Besser nicht. Wenn es hängt, lass es laufen oder force-kill mit `Ctrl+C` und retry. +A: Besser nicht. Wenn es hängt, lass es laufen oder force-kill mit `Ctrl+C` und retry. **F: Kann ich rollback machen?** A: Ja! Boot-Menü zeigt alte Generationen. `systemctl revert` bei Fehler. --- -## Erfolgreiche Installation ✅ +## Erfolgreiche Installation Wenn alles funktioniert: - COSMIC startet @@ -280,15 +280,15 @@ Wenn alles funktioniert: - Steam funktioniert (wenn installiert) - Internet läuft -**Glückwunsch! Du bist auf COSMIC umgestiegen.** 🚀 +**Glückwunsch! Du bist auf COSMIC umgestiegen.** --- ## Notizen -- **NixOS 26.05** → vollständig kompatibel ✅ +- **NixOS 26.05** → vollständig kompatibel - **COSMIC** → Wayland-native, moderne Alternative - **Chaotic Nyx** → Liefert aktuelle GPU-Treiber - **Dein Gaming-Setup** → Behält alle Spiele-Features -Viel Erfolg! 🎮 +Viel Erfolg! diff --git a/docs/GAMING_CUSTOMIZATION_GUIDE.md b/docs/GAMING_CUSTOMIZATION_GUIDE.md index fe7503e..739b477 100644 --- a/docs/GAMING_CUSTOMIZATION_GUIDE.md +++ b/docs/GAMING_CUSTOMIZATION_GUIDE.md @@ -15,7 +15,7 @@ Dieses Template kommt mit Gaming-Support. Zum Aktivieren: ```nix # In deiner configuration.nix sicherstellen, dass gaming.nix importiert ist: imports = [ - ./modules/gaming.nix # ✅ sollte schon da sein + ./modules/gaming.nix # sollte schon da sein ]; ``` @@ -36,7 +36,7 @@ steam 2. **Proton wählen (Built-in):** - Settings → Compatibility - - "Use Steam Play for other titles" ✅ + - "Use Steam Play for other titles" - Version: **Proton (Experimental)** (neueste & beste) 3. **Proton-GE installieren (Optional, aber empfohlen!):** @@ -98,10 +98,10 @@ gamemoderun mangohud %command% | Proton | Kompatibilität | Performance | Empfehlung | |--------|---|---|---| -| Standard | ✅ Gut | ✅ Gut | OK | -| **Proton-GE** | **✅✅ Sehr gut** | **✅✅ Sehr gut** | **🏆 Empfohlen** | -| Proton-CachyOS | ✅✅ Sehr gut | ✅✅ Sehr gut | 🏆 Alternative | -| Proton Experimental | ✅ Gut | ✅ Gut | Fallback | +| Standard | Gut | Gut | OK | +| **Proton-GE** | **Sehr gut** | **Sehr gut** | **Empfohlen** | +| Proton-CachyOS | Sehr gut | Sehr gut | Alternative | +| Proton Experimental | Gut | Gut | Fallback | **Hinweis:** Proton-GE & Proton-CachyOS sind Community-Builds, nicht in nixpkgs. Daher die Auto-Scripts! @@ -365,7 +365,7 @@ rm -rf ~/.cache/nvidia-smi Beste Kompatibilität, aber weniger stabil: 1. Steam → Settings → Compatibility -2. "Use Steam Play for other titles" ✅ +2. "Use Steam Play for other titles" 3. Wähle: "Proton (Experimental)" oder "Proton-GE-Latest" ### Spiele-Verzeichnis (Optional) @@ -504,4 +504,4 @@ sudo nixos-rebuild switch --flake .#template --- -**Viel Erfolg beim Customizen! 🚀** +**Viel Erfolg beim Customizen!** diff --git a/docs/MESA_GIT_ANLEITUNG.md b/docs/MESA_GIT_ANLEITUNG.md index b9c558f..d408453 100644 --- a/docs/MESA_GIT_ANLEITUNG.md +++ b/docs/MESA_GIT_ANLEITUNG.md @@ -20,13 +20,13 @@ Erklärung und Nutzung von Mesa-Git in diesem NixOS-Gaming-Setup. Dieses Template fokussiert auf **Gaming mit modernen GPUs**. Mesa-Git bietet: -✅ **Vorteile:** +**Vorteile:** - Bessere Performance in neuen Spielen - Support für neuere GPUs - Schnellere Fixes für GPU-Bugs - Cutting-Edge Vulkan/OpenGL Features -⚠️ **Nachteile:** +**Nachteile:** - Manchmal unstabil - Kann seltene Crashes verursachen - Weniger getestet als stabile Mesa-Versionen @@ -156,7 +156,7 @@ sudo nixos-rebuild switch --flake .#template ## Welche GPU braucht Mesa-Git? -### ✅ AMD-GPUs (empfohlen für Mesa-Git) +### AMD-GPUs (empfohlen für Mesa-Git) Mesa-Git funktioniert sehr gut mit: - RDNA (RX 5000er, 6000er, 7000er) @@ -165,14 +165,14 @@ Mesa-Git funktioniert sehr gut mit: **Empfehlung:** `mesa-amd.nix` + `mesa-git.enable = true` = perfekt für AMD Gaming -### ⚠️ Intel iGPU +### Intel iGPU Mesa-Git unterstützt Intel-GPUs, kann aber: - Manchmal unstabil sein - Performance-Probleme haben - Nicht empfohlen für Gaming -### ❌ NVIDIA-GPUs +### NVIDIA-GPUs **NVIDIA nutzt NICHT Mesa!** NVIDIA nutzt proprietäre Treiber: - `nvidia.nix` – proprietäre Treiber (unabhängig von Mesa) @@ -317,7 +317,7 @@ chaotic = { enable = true; fallbackSpecialisation = true; }; - + # Optional: Andere Chaotic-Pakete # linux-hardened.enable = true; # gamescope.enable = true; @@ -332,7 +332,7 @@ Mehr Infos: https://github.com/chaotic-cx/nyx | Situation | Empfehlung | |-----------|-----------| -| **Neue AMD-GPU + Gaming** | Mesa-Git aktivieren ✅ | +| **Neue AMD-GPU + Gaming** | Mesa-Git aktivieren | | **Alte/Legacy Hardware** | Mesa-Git deaktivieren | | **NVIDIA** | Ignorieren (braucht nicht Mesa) | | **Stabilität wichtiger als Perf** | Mesa-Git deaktivieren | @@ -343,4 +343,4 @@ Mehr Infos: https://github.com/chaotic-cx/nyx **Kurz:** Mesa-Git = Neueste AMD-GPU-Treiber für Gaming. Gut für Gaming, fallback hilft bei Problemen. -Alles klar? 🚀 +Alles klar? diff --git a/docs/PODMAN_DISTROBOX.md b/docs/PODMAN_DISTROBOX.md index 2532c31..d613817 100644 --- a/docs/PODMAN_DISTROBOX.md +++ b/docs/PODMAN_DISTROBOX.md @@ -14,11 +14,11 @@ Podman = Direkt auf deinem User-Account ``` **Vorteile:** -- ✅ Kein Root-Daemon nötig -- ✅ Sicherer (läuft als normaler User) -- ✅ Docker-kompatibel (`docker` CLI funktioniert) -- ✅ Leichter als Docker -- ✅ Perfekt für Einzelnutzer +- Kein Root-Daemon nötig +- Sicherer (läuft als normaler User) +- Docker-kompatibel (`docker` CLI funktioniert) +- Leichter als Docker +- Perfekt für Einzelnutzer --- @@ -122,9 +122,9 @@ exit distrobox list # Output: -# NAME | STATUS | IMAGE NAME -# ubuntu-dev | CREATED | ubuntu:latest -# alpine-work | EXITED | alpine:latest +# NAME | STATUS | IMAGE NAME +# ubuntu-dev | CREATED | ubuntu:latest +# alpine-work | EXITED | alpine:latest ``` ### Container löschen @@ -346,11 +346,11 @@ Nutzen wenn: ### NICHT für Gaming! ``` -❌ Spiele laufen nicht in Distrobox -❌ GameMode funktioniert nicht im Container -❌ GPU-Zugriff kompliziert + Spiele laufen nicht in Distrobox + GameMode funktioniert nicht im Container + GPU-Zugriff kompliziert -✅ Nutze Bare Metal für Gaming + Nutze Bare Metal für Gaming ``` --- @@ -373,4 +373,4 @@ Nutzen wenn: --- -**Podman ist dein neuer Docker-Ersatz auf NixOS!** 🐳→📦 +**Podman ist dein neuer Docker-Ersatz auf NixOS!** → diff --git a/docs/SETUP_FUER_FREUNDE.md b/docs/SETUP_FUER_FREUNDE.md index c966be4..c6e4d3e 100644 --- a/docs/SETUP_FUER_FREUNDE.md +++ b/docs/SETUP_FUER_FREUNDE.md @@ -14,13 +14,13 @@ cd ~/nixos-config ``` **Was wird geklont?** -- ✅ `flake.nix` – Die Eingangsdatei -- ✅ `flake.lock` – Gepinnte Versionen für reproduzierbare Builds -- ✅ Alle Module im `modules/`-Verzeichnis -- ✅ `configuration.nix` – Basis-Config -- ✅ `hardware-configuration.nix` – Host-spezifische Beispiel-/Ausgangsdatei -- ✅ Alle `.md`-Dateien (Anleitungen) -- ✅ Git-History +- `flake.nix` – Die Eingangsdatei +- `flake.lock` – Gepinnte Versionen für reproduzierbare Builds +- Alle Module im `modules/`-Verzeichnis +- `configuration.nix` – Basis-Config +- `hardware-configuration.nix` – Host-spezifische Beispiel-/Ausgangsdatei +- Alle `.md`-Dateien (Anleitungen) +- Git-History **Was musst du trotzdem prüfen?** - `hardware-configuration.nix` muss zu deinem Rechner passen. @@ -71,7 +71,7 @@ Alle starten mit denselben Input-Versionen. ## Stable vs Unstable - Was sollte im Repo sein? -### Aktuelle Wahl: `nixos-unstable` ✅ (Richtig!) +### Aktuelle Wahl: `nixos-unstable` (Richtig!) **flake.nix sagt:** ```nix @@ -83,10 +83,10 @@ nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; | Kriterium | Stable | Unstable | |-----------|--------|----------| | **Stabilität** | Hoch | Mittel (aber gut getestet) | -| **Aktuelle Treiber** | ⚠️ Verzögert | ✅ Täglich neu | +| **Aktuelle Treiber** | Verzögert | Täglich neu | | **Gaming** | Funktioniert | **Optimal** | -| **Mesa-Git** | ❌ Nicht möglich | ✅ Ja | -| **Chaotic-Nyx** | ❌ Nicht kompatibel | ✅ Ja | +| **Mesa-Git** | Nicht möglich | Ja | +| **Chaotic-Nyx** | Nicht kompatibel | Ja | | **Steam/Proton** | Funktioniert | **Neuste Fixes** | **Conclusion:** `nixos-unstable` ist die richtige Wahl für Gaming + Chaotic-Nyx. @@ -170,9 +170,9 @@ graphicsConfig = ./modules/graphics/mesa-amd.nix; # oder nvidia.nix, etc. Dieses Repo nutzt bereits **Chaotic-Nyx Cachix** (vorkompilierte Pakete). Das bedeutet: -- ✅ Builds sind 4-6x schneller -- ✅ Statt 90 Min → nur 15-30 Min -- ✅ Automatisch aktiviert, kein Setup nötig +- Builds sind 4-6x schneller +- Statt 90 Min → nur 15-30 Min +- Automatisch aktiviert, kein Setup nötig **Mehr Infos:** Siehe [`CACHIX_ANLEITUNG.md`](CACHIX_ANLEITUNG.md) @@ -390,14 +390,14 @@ flake.lock = reproduzierbare Input-Versionen ### Richtig versionieren ```bash -# ✅ Immer committen: +# Immer committen: - flake.nix (Eingabe-Definition) - flake.lock (Input-Versionen) - configuration.nix (Config) - modules/ (Die ganzen Module) - *.md (Dokumentation) -# ⚠️ Nur committen, wenn das Repo wirklich genau diesen Host beschreibt: +# Nur committen, wenn das Repo wirklich genau diesen Host beschreibt: - hardware-configuration.nix ``` @@ -438,9 +438,9 @@ git pull upstream main | **Stable oder Unstable?** | `nixos-unstable` (für Gaming optimal) | | **Mesa-Git automatisch?** | Ja, aktiviert in modules/chaotic-nyx.nix | | **Kann ich den Desktop wechseln?** | Ja, einfach die Zeile in configuration.nix ändern | -| **Wie update ich später?** | `nix flake update && sudo nixos-rebuild switch --flake .#template` | +| **Wie update ich später?** | `nixos-update` oder `nixos-update update-inputs` | | **Kann ich meine Anpassungen speichern?** | Ja, in Unterordnern oder neuen Modulen | --- -**Alles klar? Jetzt können deine Freunde direkt loslegen!** 🚀 +**Alles klar? Jetzt können deine Freunde direkt loslegen!** diff --git a/docs/UPDATER_ANLEITUNG.md b/docs/UPDATER_ANLEITUNG.md new file mode 100644 index 0000000..0d2e684 --- /dev/null +++ b/docs/UPDATER_ANLEITUNG.md @@ -0,0 +1,73 @@ +# NixOS Update + +`nixos-update` ist der eingebaute Update-Helfer für dieses Repo. Er zieht zuerst den neuesten Stand aus Git und führt danach `nixos-rebuild` mit deiner lokalen Flake-Konfiguration aus. + +Der Befehl wird über [`modules/updater.nix`](../modules/updater.nix) ins System installiert. + +## Repo im Modul setzen + +Repo-Pfad und Flake-Ziel stehen direkt in `modules/updater.nix`. Für Freunde und für ein dauerhaftes System-Repo ist `/etc/nixos` der empfohlene Ort. + +```nix +repo_root="/etc/nixos" +flake_target="template" +``` + +## Standard + +```bash +nixos-update +``` + +Das ist der normale Alltagsfall: + +```bash +git pull --ff-only +sudo nixos-rebuild switch --flake /pfad/zum/repo# +``` + +## Modi + +```bash +nixos-update switch +nixos-update boot +``` + +- `switch` aktiviert die neue Generation sofort. Das ist auch der Standard. +- `boot` baut die neue Generation, aktiviert sie aber erst für den nächsten Neustart. + +## Weitere Optionen + +```bash +nixos-update update-inputs +nixos-update dry-run +``` + +- `update-inputs` führt vor dem Rebuild noch `nix flake update` aus. +- `dry-run` zeigt die Schritte und Befehle an, ohne sie auszuführen. + +## Typische Beispiele + +```bash +nixos-update +nixos-update update-inputs +nixos-update boot +nixos-update boot update-inputs +nixos-update dry-run +``` + +## Hinweise + +- Das Skript nutzt `git pull --ff-only`. Wenn dein lokaler Branch und der Remote auseinanderlaufen, stoppt der Pull bewusst. +- Wenn `repo_root` für den normalen Benutzer nicht beschreibbar ist, laufen Git- und Flake-Befehle mit `sudo`. Das passt besonders für `/etc/nixos`. +- Vor jedem größeren Schritt zeigt das Skript den Abschnitt und den konkreten Befehl an. +- Bei lokalen uncommitteten Änderungen erscheint vor dem Pull eine Warnung. +- `nixos-update` fragt per `sudo -v` nach deinem Passwort, sobald es sudo wirklich braucht. +- `nixos-sync` und `update-nixos` bleiben als Alias erhalten und rufen intern ebenfalls `nixos-update` auf. +- Wenn du das Repo an einen anderen Ort legst, ändere `repo_root` direkt in `modules/updater.nix`. + +## Hilfe + +```bash +nixos-update help +``` diff --git a/modules/desktop/cosmic.nix b/modules/desktop/cosmic.nix index 4a52fa3..9d8e267 100644 --- a/modules/desktop/cosmic.nix +++ b/modules/desktop/cosmic.nix @@ -10,7 +10,7 @@ xdg.portal.enable = true; environment.systemPackages = with pkgs; [ - # Schlanke COSMIC-Basis fuer den Alltag + # Schlanke COSMIC-Basis für den Alltag gnome-keyring networkmanagerapplet seahorse diff --git a/modules/gaming-tweaks.nix b/modules/gaming-tweaks.nix index c31bde1..5a350cb 100644 --- a/modules/gaming-tweaks.nix +++ b/modules/gaming-tweaks.nix @@ -8,7 +8,7 @@ # für extrem aggressive Gaming-Performance boot.kernelParams = [ - # ⚠️ WARNUNG: Deaktiviert Spectre/Meltdown-Mitigations! + # WARNUNG: Deaktiviert Spectre/Meltdown-Mitigations! # Sicherheitsrisiko, aber +20-30% Performance # Nur für Offline-Gaming PCs empfohlen! # "mitigations=off" diff --git a/modules/gaming/wine-proton.nix b/modules/gaming/wine-proton.nix index 4ff0645..40044c6 100644 --- a/modules/gaming/wine-proton.nix +++ b/modules/gaming/wine-proton.nix @@ -18,7 +18,7 @@ STEAM_EXTRA_COMPAT_TOOLS_PATHS = "$HOME/.steam/root/compatibilitytools.d"; }; - # ℹ️ PROTON-GE & PROTON-CACHYOS sind NICHT in nixpkgs! + # PROTON-GE & PROTON-CACHYOS sind NICHT in nixpkgs! # # Warum nicht? # - Community-Builds mit häufigen Updates (täglich/wöchentlich) @@ -39,5 +39,3 @@ # LÖSUNG 3: Chaotic-Nyx (bereits im Repo!) # Chaotic-Nyx hat viele Gaming-Tools, aber nicht Proton-GE/CachyOS } - - diff --git a/modules/graphics/mesa-amd-opencl.nix b/modules/graphics/mesa-amd-opencl.nix index 96c7ec3..da54117 100644 --- a/modules/graphics/mesa-amd-opencl.nix +++ b/modules/graphics/mesa-amd-opencl.nix @@ -1,6 +1,9 @@ { pkgs, ... }: { + # Aktiviert die erweiterten AMDGPU-Features, damit LACT auch OC/UV setzen kann. + boot.kernelParams = [ "amdgpu.ppfeaturemask=0xffffffff" ]; + hardware.graphics = { enable = true; enable32Bit = true; @@ -15,6 +18,7 @@ }; services.xserver.videoDrivers = [ "amdgpu" ]; + services.lact.enable = true; hardware.amdgpu = { initrd.enable = true; diff --git a/modules/graphics/mesa-amd.nix b/modules/graphics/mesa-amd.nix index a52e818..fe37026 100644 --- a/modules/graphics/mesa-amd.nix +++ b/modules/graphics/mesa-amd.nix @@ -1,6 +1,9 @@ { pkgs, ... }: { + # Aktiviert die erweiterten AMDGPU-Features, damit LACT auch OC/UV setzen kann. + boot.kernelParams = [ "amdgpu.ppfeaturemask=0xffffffff" ]; + hardware.graphics = { enable = true; enable32Bit = true; @@ -17,4 +20,4 @@ mesa-demos vulkan-tools ]; -} \ No newline at end of file +} diff --git a/modules/updater.nix b/modules/updater.nix new file mode 100644 index 0000000..1408d1f --- /dev/null +++ b/modules/updater.nix @@ -0,0 +1,159 @@ +{ pkgs, ... }: + +let + script = '' + set -euo pipefail + + # Wenn dein NixOS-Repo nicht in /etc/nixos liegt, diesen Pfad hier anpassen. + repo_root="/etc/nixos" + + # Das muss zum Namen in flake.nix unter nixosConfigurations. passen. + flake_target="template" + rebuild_mode="switch" + update_inputs=false + dry_run=false + needs_sudo=false + + usage() { + cat <<'EOF' +Usage: nixos-update [switch|boot] [update-inputs] [dry-run] + +Syncs this repo and rebuilds NixOS from the local flake config. + +Arguments: + switch Build and activate the new system immediately + boot Build and activate for next boot instead of switching now + update-inputs Run `nix flake update` before rebuilding + dry-run Show commands without executing them + help Show this help +EOF + } + + while [[ $# -gt 0 ]]; do + case "$1" in + update-inputs) + update_inputs=true + ;; + switch) + rebuild_mode="switch" + ;; + boot) + rebuild_mode="boot" + ;; + dry-run) + dry_run=true + ;; + help|-h|--help) + usage + exit 0 + ;; + *) + echo "Unknown option: $1" >&2 + usage >&2 + exit 1 + ;; + esac + shift + done + + step() { + printf '\n==> %s\n' "$1" + } + + print_command() { + printf ' $' + printf ' %q' "$@" + printf '\n' + } + + run() { + print_command "$@" + + if [[ "$dry_run" == true ]]; then + return 0 + fi + + "$@" + } + + run_repo() { + if [[ "$needs_sudo" == true ]]; then + run sudo "$@" + else + run "$@" + fi + } + + echo "Repo: $repo_root" + echo "Flake target: $flake_target" + echo "Rebuild mode: $rebuild_mode" + + if [[ ! -d "$repo_root" ]]; then + echo "Repo path does not exist: $repo_root" >&2 + echo "Adjust repo_root in modules/updater.nix or move the repo to that path." >&2 + exit 1 + fi + + if [[ ! -w "$repo_root" ]]; then + needs_sudo=true + fi + + if [[ "$needs_sudo" == true ]]; then + echo "Repo ist nicht als normaler Benutzer beschreibbar. Git- und Flake-Befehle laufen mit sudo." + step "Prüfe sudo" + run sudo -v + fi + + step "Wechsle ins Repo" + print_command cd "$repo_root" + cd "$repo_root" + + if [[ "$needs_sudo" == true ]]; then + git_check=(sudo git rev-parse --is-inside-work-tree) + else + git_check=(git rev-parse --is-inside-work-tree) + fi + + if ! "''${git_check[@]}" >/dev/null 2>&1; then + echo "Repo path is not a Git repository: $repo_root" >&2 + echo "Clone your config repo there or adjust repo_root in modules/updater.nix." >&2 + exit 1 + fi + + if ! run_repo git diff --quiet || ! run_repo git diff --cached --quiet; then + echo "Working tree has local changes. git pull may fail if upstream changed the same files." + fi + + step "Aktualisiere Git-Repo" + run_repo git pull --ff-only + + if [[ "$update_inputs" == true ]]; then + step "Aktualisiere Flake-Inputs" + run_repo nix flake update + fi + + step "Prüfe sudo für den NixOS-Rebuild" + run sudo -v + + step "Starte nixos-rebuild" + run sudo nixos-rebuild "$rebuild_mode" --flake "$repo_root#$flake_target" + ''; + + nixosUpdate = pkgs.writeShellScriptBin "nixos-update" script; + + updateNixosCompat = pkgs.writeShellScriptBin "update-nixos" '' + exec ${nixosUpdate}/bin/nixos-update "$@" + ''; + + nixosSyncCompat = pkgs.writeShellScriptBin "nixos-sync" '' + exec ${nixosUpdate}/bin/nixos-update "$@" + ''; +in + +{ + environment.systemPackages = [ + nixosUpdate + nixosSyncCompat + updateNixosCompat + ]; +}