This commit is contained in:
2026-06-16 21:49:01 +02:00
parent 65a547ad1a
commit 956889173a
15 changed files with 326 additions and 154 deletions
+13 -80
View File
@@ -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
+2
View File
@@ -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
+13 -13
View File
@@ -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!**
+7 -7
View File
@@ -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
@@ -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!
+8 -8
View File
@@ -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!**
+7 -7
View File
@@ -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)
@@ -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?
+10 -10
View File
@@ -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
---
@@ -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!**
+18 -18
View File
@@ -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!**
+73
View File
@@ -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#<flake_target>
```
## 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
```
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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"
+1 -3
View File
@@ -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
}
+4
View File
@@ -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;
+3
View File
@@ -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;
+159
View File
@@ -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.<name> 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
];
}