Initial template repo
This commit is contained in:
@@ -0,0 +1,376 @@
|
||||
# Cachix Setup Anleitung
|
||||
|
||||
Wie du Cachix nutzt, um deine NixOS-Builds massiv zu beschleunigen.
|
||||
|
||||
---
|
||||
|
||||
## Was ist Cachix?
|
||||
|
||||
**Cachix** = Vorkompilierte Nix-Pakete (wie ein Mirror/Cache).
|
||||
|
||||
Statt alles selbst zu kompilieren:
|
||||
```
|
||||
❌ Kompilieren (1-2 Stunden):
|
||||
gcc + glibc + steam + mesa + ... = sehr lange
|
||||
|
||||
✅ Mit Cachix (10-30 Min):
|
||||
Download vorkompilierte Binaries = schnell!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Cachix bereits im Repo aktiviert! ✅
|
||||
|
||||
Dieses Template nutzt bereits **Chaotic-Nyx Cachix**:
|
||||
|
||||
**In `flake.nix`:**
|
||||
```nix
|
||||
nixConfig = {
|
||||
extra-substituters = [
|
||||
"https://nyx-cache.chaotic.cx/"
|
||||
];
|
||||
extra-trusted-public-keys = [
|
||||
"nyx-cache.chaotic.cx:dJxTrgMC3V3cFfyIiBQDQorG6k1LsqurH/srpMSq7qk="
|
||||
];
|
||||
};
|
||||
```
|
||||
|
||||
**Was das bedeutet:**
|
||||
- ✅ `substituters` = Wo Binaries runterladen
|
||||
- ✅ `trusted-public-keys` = Sichere Signatur für Cache
|
||||
- ✅ Automatisch aktiviert, kein Setup nötig!
|
||||
|
||||
**Performance-Gewinn:**
|
||||
```
|
||||
Ohne Cachix (kompiliert alles lokal): 90+ Minuten
|
||||
Mit Cachix (nutzt vorkompilierte Binaries): 15-30 Minuten
|
||||
→ 5-6x schneller!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Welche Caches sind aktiv?
|
||||
|
||||
### Standard NixOS Cache
|
||||
|
||||
Automatisch bei jedem NixOS:
|
||||
```
|
||||
https://cache.nixos.org/
|
||||
```
|
||||
|
||||
**Was da ist:**
|
||||
- Stabile nixpkgs-Pakete
|
||||
- Offizielle NixOS-Binaries
|
||||
|
||||
### Chaotic-Nyx Cache (Im Repo)
|
||||
|
||||
```
|
||||
https://nyx-cache.chaotic.cx/
|
||||
```
|
||||
|
||||
**Was da ist:**
|
||||
- Mesa-Git (neueste GPU-Treiber)
|
||||
- Chaotic-Pakete
|
||||
- Gaming-Tools (Steam, Proton, etc.)
|
||||
|
||||
### Weitere Caches hinzufügen (Optional)
|
||||
|
||||
Falls du mehr Caches willst (z.B. für andere Projekte):
|
||||
|
||||
**In `flake.nix` ergänzen:**
|
||||
```nix
|
||||
nixConfig = {
|
||||
extra-substituters = [
|
||||
"https://nyx-cache.chaotic.cx/"
|
||||
"https://cache.nixos.org/"
|
||||
"https://numtide.cachix.org" # Z.B. Devenv
|
||||
];
|
||||
extra-trusted-public-keys = [
|
||||
"nyx-cache.chaotic.cx:dJxTrgMC3V3cFfyIiBQDQorG6k1LsqurH/srpMSq7qk="
|
||||
"numtide.cachix.org-1:B7mY+4SOvX0nW0q6Z0i4N/BcL2RivchtA7yCNFrvW0s="
|
||||
];
|
||||
};
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Cachix System-Wide aktivieren
|
||||
|
||||
Falls ihr später selbst Caches hinzufügen wollt:
|
||||
|
||||
### Methode 1: In `flake.nix` (für dieses Repo) ✅
|
||||
|
||||
Wir nutzen das schon:
|
||||
```nix
|
||||
nixConfig = { ... }
|
||||
```
|
||||
|
||||
### Methode 2: In `/etc/nix/nix.conf` (für alle Flakes)
|
||||
|
||||
```bash
|
||||
sudo nano /etc/nix/nix.conf
|
||||
```
|
||||
|
||||
Hinzufügen:
|
||||
```ini
|
||||
substituters = https://cache.nixos.org/ https://nyx-cache.chaotic.cx/
|
||||
trusted-public-keys = nyx-cache.chaotic.cx:dJxTrgMC3V3cFfyIiBQDQorG6k1LsqurH/srpMSq7qk=
|
||||
```
|
||||
|
||||
**Dann neuladen:**
|
||||
```bash
|
||||
sudo systemctl restart nix-daemon
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Cachix Performance-Check
|
||||
|
||||
### Cache-Hits prüfen
|
||||
|
||||
```bash
|
||||
# Beim Build: Schau auf die Ausgabe
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
|
||||
# Output sollte zeigen:
|
||||
# "copying path ... from 'https://nyx-cache.chaotic.cx/'"
|
||||
# ^ Das bedeutet: Aus Cache heruntergeladen!
|
||||
|
||||
# vs.
|
||||
|
||||
# "building '/nix/store/...'"
|
||||
# ^ Das bedeutet: Lokal kompiliert (no cache hit)
|
||||
```
|
||||
|
||||
### Wie viele von Cache?
|
||||
|
||||
```bash
|
||||
# Nach Build überprüfen:
|
||||
nix store ls -R /nix/store/... | wc -l
|
||||
|
||||
# Ungefähr: Mit Cachix 50-60% Cache, 40-50% kompiliert
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Eigenen Cachix Cache erstellen (Advanced)
|
||||
|
||||
Falls ihr einen Team-Cache bauen wollt:
|
||||
|
||||
### Schritt 1: Cachix Account erstellen
|
||||
|
||||
```bash
|
||||
# Online: https://www.cachix.org/
|
||||
# Gratis Tier mit 5 GB
|
||||
```
|
||||
|
||||
### Schritt 2: Cachix CLI installieren
|
||||
|
||||
```bash
|
||||
nix-shell -p cachix
|
||||
|
||||
# Oder:
|
||||
nix profile install nixpkgs#cachix
|
||||
```
|
||||
|
||||
### Schritt 3: Authentifizieren
|
||||
|
||||
```bash
|
||||
cachix authtoken
|
||||
# Token in https://app.cachix.org/tokens einsehen
|
||||
# Eingeben wenn gefordert
|
||||
```
|
||||
|
||||
### Schritt 4: Cache pushen
|
||||
|
||||
```bash
|
||||
# Nach erfolgreichen Build:
|
||||
sudo nix copy --to "file:///tmp/nix-cache" /run/current-system
|
||||
|
||||
# Dann zu Cachix:
|
||||
cachix push my-cache /tmp/nix-cache
|
||||
```
|
||||
|
||||
### Schritt 5: Im Repo nutzen
|
||||
|
||||
```nix
|
||||
# In flake.nix:
|
||||
extra-substituters = [
|
||||
"https://my-cache.cachix.org"
|
||||
];
|
||||
extra-trusted-public-keys = [
|
||||
"my-cache.cachix.org-1:XXXXX..."
|
||||
];
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Cachix mit `nix-direnv` (Workflow-Tipp)
|
||||
|
||||
Falls ihr `nix-direnv` nutzt:
|
||||
|
||||
```bash
|
||||
# .envrc
|
||||
use flake
|
||||
```
|
||||
|
||||
**Das wird auf jeden Cache-Hit prüfen!**
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Problem: Cache wird nicht genutzt (Alles wird kompiliert)
|
||||
|
||||
**Ursache 1: Falsche Public Key**
|
||||
```bash
|
||||
# Überprüfe in flake.nix:
|
||||
grep trusted-public-keys flake.nix
|
||||
# Sollte exakt wie bei Cachix stehen
|
||||
```
|
||||
|
||||
**Ursache 2: Cache-Server offline**
|
||||
```bash
|
||||
# Test:
|
||||
curl -I https://nyx-cache.chaotic.cx/
|
||||
|
||||
# Falls 403/404: Cache hat Probleme
|
||||
# → Fallback auf lokales Bauen: --no-substitute
|
||||
```
|
||||
|
||||
**Ursache 3: Nix-Daemon nicht neugestartet**
|
||||
```bash
|
||||
sudo systemctl restart nix-daemon
|
||||
```
|
||||
|
||||
### Problem: "Signature doesn't match"
|
||||
|
||||
```
|
||||
Error: Signature doesn't match
|
||||
```
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Public Key überprüfen:
|
||||
echo "nyx-cache.chaotic.cx:dJxTrgMC3V3cFfyIiBQDQorG6k1LsqurH/srpMSq7qk=" | tee -a ~/.config/nix/nix.conf
|
||||
|
||||
# Oder neu eingeben (exakt!)
|
||||
```
|
||||
|
||||
### Problem: Zu langsam trotz Cache
|
||||
|
||||
```bash
|
||||
# 1. Cache-Status prüfen:
|
||||
nix show-config substituters
|
||||
|
||||
# 2. Parallele Jobs erhöhen:
|
||||
sudo nano /etc/nix/nix.conf
|
||||
# max-jobs = 8
|
||||
# cores = 8
|
||||
|
||||
# 3. Nix-Daemon neustarten:
|
||||
sudo systemctl restart nix-daemon
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Performance-Vergleich
|
||||
|
||||
### Ohne Cachix (Kompilieren)
|
||||
|
||||
```
|
||||
$ sudo nixos-rebuild switch --flake .#template
|
||||
|
||||
building '/nix/store/...-mesa-git'
|
||||
building '/nix/store/...-steam'
|
||||
building '/nix/store/...-gcc'
|
||||
|
||||
[████████████░░░░░░░░░░░░░░░░░░░] 45% (90 min)
|
||||
```
|
||||
|
||||
### Mit Cachix (Herunterladen)
|
||||
|
||||
```
|
||||
$ sudo nixos-rebuild switch --flake .#template
|
||||
|
||||
copying path from 'https://nyx-cache.chaotic.cx/' ...
|
||||
copying path from 'https://nyx-cache.chaotic.cx/' ...
|
||||
|
||||
[██████████████████████████████░░░] 95% (20 min)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Für Freunde: Cachix Erklärung
|
||||
|
||||
### Einfach:
|
||||
|
||||
```
|
||||
"Cachix = vorkompilierte Pakete downloaden statt selbst bauen"
|
||||
|
||||
Mit Cachix: 20 Minuten
|
||||
Ohne Cachix: 90 Minuten
|
||||
→ 4x schneller!
|
||||
```
|
||||
|
||||
### Falls Freunde fragen: "Ist das sicher?"
|
||||
|
||||
Antwort:
|
||||
```
|
||||
Ja! Wir nutzen trusted-public-keys für digitale Signaturen.
|
||||
Nur signierte Pakete vom Chaotic-Nyx Team werden installiert.
|
||||
```
|
||||
|
||||
### Falls kein Internet:
|
||||
|
||||
```bash
|
||||
# Cachix funktioniert nur mit Internet
|
||||
# Ohne Internet: --no-substitute
|
||||
sudo nixos-rebuild switch --flake .#template --no-substitute
|
||||
# (Dauert länger, aber funktioniert offline)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Checkliste für Freunde
|
||||
|
||||
- [ ] Cachix ist im Repo aktiviert (`flake.nix`)
|
||||
- [ ] Beim ersten `nix flake update` wird Cache-Config geladen
|
||||
- [ ] Beim `nixos-rebuild` sollte Cache genutzt werden
|
||||
- [ ] Build dauert 15-30 Min (mit Cache), nicht 90+ Min
|
||||
- [ ] Falls zu langsam: Cache ist wahrscheinlich offline → Fallback OK
|
||||
|
||||
---
|
||||
|
||||
## Nützliche Commands
|
||||
|
||||
```bash
|
||||
# Cache-Status anzeigen
|
||||
nix show-config substituters
|
||||
|
||||
# System-Toplevel testweise bauen
|
||||
nix build .#nixosConfigurations.template.config.system.build.toplevel
|
||||
|
||||
# Fallback (kein Cache)
|
||||
sudo nixos-rebuild switch --flake .#template --no-substitute
|
||||
|
||||
# Cache räumen (alt Zeug löschen)
|
||||
nix-collect-garbage -d
|
||||
|
||||
# Speicher prüfen
|
||||
df -h /nix
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Zusammenfassung
|
||||
|
||||
| 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 ist schon aktiviert – einfach genießen!** 🚀
|
||||
@@ -0,0 +1,294 @@
|
||||
# COSMIC Desktop Umstieg - Schritt-für-Schritt Anleitung
|
||||
|
||||
Anleitung zum Wechsel von deinem aktuellen NixOS 26.05 Setup zu COSMIC Desktop Environment.
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
- NixOS 26.05 installiert (✅ dein aktueller Stand)
|
||||
- Zugriff auf Terminal/SSH
|
||||
- Die Dateien im `~/nixos-config` Verzeichnis
|
||||
|
||||
---
|
||||
|
||||
## Schritt 1: Backup erstellen
|
||||
|
||||
Bevor wir Änderungen machen, ein Backup der aktuellen Konfiguration:
|
||||
|
||||
```bash
|
||||
cd ~/nixos-config
|
||||
git status
|
||||
git add -A
|
||||
git commit -m "Backup vor COSMIC Umstieg"
|
||||
```
|
||||
|
||||
**Was das macht:**
|
||||
- Git speichert deinen aktuellen Zustand
|
||||
- Falls etwas schiefgeht, kannst du mit `git revert` zurückgehen
|
||||
|
||||
---
|
||||
|
||||
## Schritt 2: configuration.nix anpassen
|
||||
|
||||
Öffne die Datei:
|
||||
```bash
|
||||
nano ~/nixos-config/configuration.nix
|
||||
```
|
||||
|
||||
**Suche diese Zeile** (ca. Zeile 13):
|
||||
```nix
|
||||
desktopConfig = ./modules/desktop/kde.nix;
|
||||
```
|
||||
|
||||
**Ändere sie zu:**
|
||||
```nix
|
||||
desktopConfig = ./modules/desktop/cosmic-max.nix;
|
||||
```
|
||||
|
||||
**Speichern & Schließen:**
|
||||
- Drücke `Ctrl+O` → `Enter`
|
||||
- Drücke `Ctrl+X`
|
||||
|
||||
---
|
||||
|
||||
## Schritt 3: Optional - GPU-Treiber überprüfen
|
||||
|
||||
Für COSMIC empfohlen: AMD-Treiber oder NVIDIA 550+
|
||||
|
||||
**Aktuelle Einstellung überprüfen** (Zeile 20):
|
||||
```nix
|
||||
graphicsConfig = ./modules/graphics/mesa-amd.nix;
|
||||
```
|
||||
|
||||
Falls du NVIDIA hast:
|
||||
```nix
|
||||
graphicsConfig = ./modules/graphics/nvidia-open.nix;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schritt 4: Flake.nix überprüfen
|
||||
|
||||
Die `flake.nix` braucht keinen Umbau - sie hat schon alles für COSMIC:
|
||||
|
||||
```bash
|
||||
cat ~/nixos-config/flake.nix
|
||||
```
|
||||
|
||||
✅ Sollte enthalten:
|
||||
- `chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"` (für aktuelle Pakete)
|
||||
- Extra Substituter für `nyx-cache.chaotic.cx`
|
||||
|
||||
Falls nicht: Die bestehende `flake.nix` ist optimal, brauchst nichts ändern.
|
||||
|
||||
---
|
||||
|
||||
## Schritt 5: Update durchführen (Der wichtige Schritt!)
|
||||
|
||||
Öffne Terminal im Projekt-Verzeichnis:
|
||||
|
||||
```bash
|
||||
cd ~/nixos-config
|
||||
```
|
||||
|
||||
### Option A: Mit Flakes (EMPFOHLEN)
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
**Was das macht:**
|
||||
- Lädt alle Abhängigkeiten herunter
|
||||
- Compiliert die neue Config
|
||||
- Wechselt sofort zu COSMIC
|
||||
- Dauert: 5-15 Minuten (je nach Internetverbindung & Hardware)
|
||||
|
||||
### Option B: Ohne Flakes (Falls Probleme mit A)
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild switch -I nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Schritt 6: System neu starten
|
||||
|
||||
Nach erfolgreichem Build:
|
||||
|
||||
```bash
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
**Bei Neustart:**
|
||||
- COSMIC-Greeter (Login-Bildschirm) sollte erscheinen
|
||||
- Melde dich an
|
||||
- COSMIC Desktop startet
|
||||
|
||||
---
|
||||
|
||||
## Schritt 7: Überprüfung
|
||||
|
||||
Nach dem Login, öffne ein Terminal (`Ctrl+Alt+T` oder über Launcher):
|
||||
|
||||
```bash
|
||||
# Zeigt dein aktuelles Desktop Environment
|
||||
echo $DESKTOP_SESSION
|
||||
|
||||
# Sollte zeigen:
|
||||
# cosmic
|
||||
```
|
||||
|
||||
Prüfe auch:
|
||||
- **Systemeinstellungen** (cosmic-settings) funktionieren?
|
||||
- **Dateiverwaltung** (cosmic-files) funktioniert?
|
||||
- **Terminal** (cosmic-terminal) startet?
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Problem: `error: flake not found`
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
cd ~/nixos-config
|
||||
nix flake update
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
### Problem: NVIDIA + schwarzer Bildschirm
|
||||
|
||||
**Das ist normal beim ersten Start mit NVIDIA.**
|
||||
|
||||
Lösung:
|
||||
```bash
|
||||
# Starte in TTY (Ctrl+Alt+F2)
|
||||
# Melde dich an
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
### Problem: COSMIC startet nicht / bleibt bei Login hängen
|
||||
|
||||
**Fallback zu KDE:**
|
||||
1. Öffne Terminal: `Ctrl+Alt+F2`
|
||||
2. Melde dich an
|
||||
3. Ändere `configuration.nix` zurück:
|
||||
```bash
|
||||
nano ~/nixos-config/configuration.nix
|
||||
# Ändere desktopConfig = ./modules/desktop/kde.nix;
|
||||
```
|
||||
4. Rebuild: `sudo nixos-rebuild switch --flake .#template`
|
||||
|
||||
### Problem: `chaotic.nixosModules.default` nicht gefunden
|
||||
|
||||
**Lösung - Flakes neuladen:**
|
||||
```bash
|
||||
cd ~/nixos-config
|
||||
nix flake update
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Nach der Installation: Erste Schritte
|
||||
|
||||
### 1. Grundeinstellungen
|
||||
|
||||
Öffne **COSMIC Settings** (cosmic-settings):
|
||||
- Zeitzone prüfen
|
||||
- Tastaturlayout einstellen
|
||||
- Bildschirmauflösung anpassen
|
||||
- Netzwerk verbinden
|
||||
|
||||
### 2. Terminal konfigurieren
|
||||
|
||||
```bash
|
||||
cosmic-terminal
|
||||
# Rechtsklick → Preferences
|
||||
```
|
||||
|
||||
### 3. Steam installieren (für Gaming)
|
||||
|
||||
```bash
|
||||
# Bereits in modules/gaming.nix eingebunden
|
||||
# Überprüfe mit:
|
||||
which steam
|
||||
|
||||
# Oder starten:
|
||||
steam
|
||||
```
|
||||
|
||||
### 4. Zusätzliche Tools installieren (Optional)
|
||||
|
||||
Falls du weitere Anwendungen brauchst, edit `modules/packages.nix`:
|
||||
|
||||
```bash
|
||||
nano ~/nixos-config/modules/packages.nix
|
||||
```
|
||||
|
||||
Beispiele zum Hinzufügen:
|
||||
```nix
|
||||
environment.systemPackages = with pkgs; [
|
||||
firefox # Browser
|
||||
vlc # Media Player
|
||||
vscode # Editor
|
||||
];
|
||||
```
|
||||
|
||||
Dann rebuild:
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Zurück zu KDE (Falls es nicht passt)
|
||||
|
||||
Falls COSMIC nicht für dich funktioniert, einfach zurück:
|
||||
|
||||
```bash
|
||||
# configuration.nix
|
||||
desktopConfig = ./modules/desktop/kde.nix;
|
||||
|
||||
# Dann:
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Häufige Fragen
|
||||
|
||||
**F: Wird meine Festplatte gelöscht?**
|
||||
A: Nein! `nixos-rebuild switch` ist nicht-destruktiv. Alte Konfigurationen bleiben auf der Festplatte.
|
||||
|
||||
**F: Wie lange dauert der Umbau?**
|
||||
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.
|
||||
|
||||
**F: Kann ich rollback machen?**
|
||||
A: Ja! Boot-Menü zeigt alte Generationen. `systemctl revert` bei Fehler.
|
||||
|
||||
---
|
||||
|
||||
## Erfolgreiche Installation ✅
|
||||
|
||||
Wenn alles funktioniert:
|
||||
- COSMIC startet
|
||||
- Alle Tools laden
|
||||
- Steam funktioniert (wenn installiert)
|
||||
- Internet läuft
|
||||
|
||||
**Glückwunsch! Du bist auf COSMIC umgestiegen.** 🚀
|
||||
|
||||
---
|
||||
|
||||
## Notizen
|
||||
|
||||
- **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! 🎮
|
||||
@@ -0,0 +1,507 @@
|
||||
# Gaming & Customization Guide
|
||||
|
||||
Anleitung für Gaming-Setup und Customization mit diesem NixOS-Template.
|
||||
|
||||
---
|
||||
|
||||
## Gaming Setup
|
||||
|
||||
### Steam & Gaming aktiv machen
|
||||
|
||||
Dieses Template kommt mit Gaming-Support. Zum Aktivieren:
|
||||
|
||||
**1. Configuration anpassen:**
|
||||
|
||||
```nix
|
||||
# In deiner configuration.nix sicherstellen, dass gaming.nix importiert ist:
|
||||
imports = [
|
||||
./modules/gaming.nix # ✅ sollte schon da sein
|
||||
];
|
||||
```
|
||||
|
||||
**2. Rebuild:**
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
### Proton & Steam
|
||||
|
||||
Steam ist automatisch installiert. Für beste Kompatibilität:
|
||||
|
||||
1. **Steam öffnen:**
|
||||
```bash
|
||||
steam
|
||||
```
|
||||
|
||||
2. **Proton wählen (Built-in):**
|
||||
- Settings → Compatibility
|
||||
- "Use Steam Play for other titles" ✅
|
||||
- Version: **Proton (Experimental)** (neueste & beste)
|
||||
|
||||
3. **Proton-GE installieren (Optional, aber empfohlen!):**
|
||||
|
||||
Proton-GE hat bessere Kompatibilität & Performance als Standard Proton.
|
||||
|
||||
**Schnelle Installation (Auto-Script):**
|
||||
```bash
|
||||
cd ~/nixos-config
|
||||
chmod +x install-proton-ge.sh
|
||||
./install-proton-ge.sh
|
||||
# Steam neu starten
|
||||
# Settings → Compatibility → "Proton-GE-X.X" wählen
|
||||
```
|
||||
|
||||
**oder Manuell:**
|
||||
```bash
|
||||
# 1. Download Proton-GE
|
||||
# https://github.com/GloriousEggroll/proton-ge-custom/releases
|
||||
|
||||
# 2. Lade die neuste Version herunter (z.B. Proton-GE-9.xx.tar.gz)
|
||||
|
||||
# 3. Extrahiere in Steam Compatibility Tools:
|
||||
mkdir -p ~/.steam/root/compatibilitytools.d
|
||||
cd ~/.steam/root/compatibilitytools.d
|
||||
tar -xzf ~/Downloads/Proton-GE-9.xx.tar.gz
|
||||
|
||||
# 4. Steam neu starten
|
||||
steam
|
||||
|
||||
# 5. In Steam: Settings → Compatibility → "Proton-GE-9.xx" wählen
|
||||
```
|
||||
|
||||
4. **Proton-CachyOS (Alternative zu Proton-GE):**
|
||||
|
||||
**Auto-Installation:**
|
||||
```bash
|
||||
cd ~/nixos-config
|
||||
chmod +x install-proton-cachyos.sh
|
||||
./install-proton-cachyos.sh
|
||||
```
|
||||
|
||||
**oder Manuell:** Selbe Schritte wie Proton-GE, aber von:
|
||||
https://github.com/CachyOS/proton-cachyos/releases
|
||||
|
||||
5. **Performance-Tools:**
|
||||
```bash
|
||||
# MangoHUD (FPS-Counter) in Launch Options:
|
||||
mangohud %command%
|
||||
|
||||
# GameMode (Auto-Optimierung):
|
||||
gamemoderun %command%
|
||||
|
||||
# Beides zusammen:
|
||||
gamemoderun mangohud %command%
|
||||
```
|
||||
|
||||
6. **Welches Proton verwenden?**
|
||||
|
||||
| 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 |
|
||||
|
||||
**Hinweis:** Proton-GE & Proton-CachyOS sind Community-Builds, nicht in nixpkgs. Daher die Auto-Scripts!
|
||||
|
||||
### GPU-Auswahl
|
||||
|
||||
Das Template unterstützt mehrere Grafikkarten. Wähle eine:
|
||||
|
||||
**In `configuration.nix`:**
|
||||
|
||||
```nix
|
||||
# AMD (Standard & empfohlen für Linux Gaming):
|
||||
graphicsConfig = ./modules/graphics/mesa-amd.nix;
|
||||
|
||||
# AMD mit OpenCL:
|
||||
graphicsConfig = ./modules/graphics/mesa-amd-opencl.nix;
|
||||
|
||||
# NVIDIA (Proprietäre Treiber):
|
||||
graphicsConfig = ./modules/graphics/nvidia.nix;
|
||||
|
||||
# NVIDIA Open-Source:
|
||||
graphicsConfig = ./modules/graphics/nvidia-open.nix;
|
||||
```
|
||||
|
||||
**Danach Rebuild:**
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
### Gaming-Performance Check
|
||||
|
||||
```bash
|
||||
# GameMode Status:
|
||||
gamemode status
|
||||
|
||||
# GPU-Infos:
|
||||
glxinfo | grep "OpenGL"
|
||||
lspci | grep VGA
|
||||
|
||||
# Performance-Test:
|
||||
glmark2
|
||||
```
|
||||
|
||||
### Wine & Proton
|
||||
|
||||
Für non-Steam Spiele (GOG, itch.io):
|
||||
|
||||
**Installiert über `modules/gaming/wine-proton.nix`:**
|
||||
|
||||
```bash
|
||||
# Wine eingebaut
|
||||
protontricks
|
||||
|
||||
# Beispiel: DXVK-Game starten
|
||||
wine game.exe
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Desktop Auswahl & Customization
|
||||
|
||||
### Desktop Environment wählen
|
||||
|
||||
Das Template kommt mit mehreren DEs. Wähle deine:
|
||||
|
||||
**In `configuration.nix`:**
|
||||
|
||||
```nix
|
||||
# KDE Plasma (Empfohlen für Balance):
|
||||
desktopConfig = ./modules/desktop/kde.nix;
|
||||
|
||||
# GNOME (Minimal, modern):
|
||||
desktopConfig = ./modules/desktop/gnome.nix;
|
||||
|
||||
# Budgie (Zwischen KDE & GNOME):
|
||||
desktopConfig = ./modules/desktop/budgie.nix;
|
||||
|
||||
# Hyprland (Tiling WM, Advanced):
|
||||
desktopConfig = ./modules/desktop/hyprland.nix;
|
||||
|
||||
# COSMIC (Modern, Wayland-native):
|
||||
desktopConfig = ./modules/desktop/cosmic-max.nix;
|
||||
```
|
||||
|
||||
**Rebuild:**
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
### KDE Plasma Customization
|
||||
|
||||
**Themes & Appearance:**
|
||||
1. System Settings → Appearance
|
||||
2. Wähle: Global Theme, Color Scheme, Icons, Fonts
|
||||
|
||||
**Panel anpassen:**
|
||||
- Rechtsklick auf Panel → Edit Panel
|
||||
- Widgets hinzufügen/entfernen
|
||||
- Position/Größe ändern
|
||||
|
||||
**Shortcuts:**
|
||||
1. System Settings → Shortcuts & Gestures → Shortcuts
|
||||
2. Neue Shortcuts hinzufügen
|
||||
|
||||
**Tipps:**
|
||||
```bash
|
||||
# KDE-Themes aus Online-Store:
|
||||
# Settings → Appearance → Global Theme → "Get New Global Themes"
|
||||
```
|
||||
|
||||
### Hyprland Customization
|
||||
|
||||
**Konfiguration Edit:**
|
||||
```bash
|
||||
nano ~/.config/hypr/hyprland.conf
|
||||
```
|
||||
|
||||
**Basis-Setup:**
|
||||
```conf
|
||||
# Monitor
|
||||
monitor = HDMI-1,1920x1080@60,0x0,1
|
||||
|
||||
# Keybinds
|
||||
bind = $mainMod, Return, exec, kitty
|
||||
bind = $mainMod, Q, killactive
|
||||
|
||||
# Windows
|
||||
general {
|
||||
gaps_in = 5
|
||||
gaps_out = 10
|
||||
}
|
||||
```
|
||||
|
||||
**Nach Änderung:**
|
||||
```bash
|
||||
# Hyprland neustart (ohne Neuboot)
|
||||
Ctrl+Alt+Q
|
||||
```
|
||||
|
||||
### COSMIC Customization
|
||||
|
||||
**Desktop-Themes:**
|
||||
1. Settings → Appearance
|
||||
2. Theme/Color wählen
|
||||
3. Accent Color anpassen
|
||||
|
||||
**Shortcuts (neue):**
|
||||
1. Settings → Keyboard → Shortcuts
|
||||
2. "+" klicken
|
||||
3. Command & Hotkey definieren
|
||||
|
||||
---
|
||||
|
||||
## Allgemeine Customization
|
||||
|
||||
### Packages hinzufügen
|
||||
|
||||
Benutzerdefinierte Pakete in `modules/packages.nix`:
|
||||
|
||||
```nix
|
||||
environment.systemPackages = with pkgs; [
|
||||
firefox # Browser
|
||||
neofetch # System Info
|
||||
htop # Task Manager
|
||||
ripgrep # Fast Search
|
||||
bat # Better cat
|
||||
];
|
||||
```
|
||||
|
||||
**Rebuild:**
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
### Audio anpassen
|
||||
|
||||
**PipeWire (Standard):**
|
||||
```bash
|
||||
# Audio-Ausgabe wechseln:
|
||||
pavucontrol
|
||||
|
||||
# Oder Kommandozeile:
|
||||
pactl list short sinks
|
||||
pactl set-default-sink [SINK]
|
||||
```
|
||||
|
||||
### Shell anpassen
|
||||
|
||||
**Fish Shell aktivieren:**
|
||||
|
||||
```nix
|
||||
# In configuration.nix:
|
||||
users.users.${userName}.shell = pkgs.fish;
|
||||
```
|
||||
|
||||
**Fish Config** (`~/.config/fish/config.fish`):
|
||||
```fish
|
||||
# Aliases
|
||||
alias ls="exa --icons"
|
||||
alias cat="bat"
|
||||
alias grep="ripgrep"
|
||||
|
||||
# Prompt anpassen
|
||||
function fish_prompt
|
||||
echo (pwd) "> "
|
||||
end
|
||||
```
|
||||
|
||||
### Terminal-Customization
|
||||
|
||||
**Hyprland Terminal (Kitty):**
|
||||
```bash
|
||||
nano ~/.config/kitty/kitty.conf
|
||||
```
|
||||
|
||||
```ini
|
||||
font_family Monospace
|
||||
font_size 12
|
||||
background #1e1e1e
|
||||
foreground #e0e0e0
|
||||
```
|
||||
|
||||
**KDE Terminal (Konsole):**
|
||||
- Rechtsklick → Settings → Appearance
|
||||
- Theme, Font, Color-Scheme wählen
|
||||
|
||||
---
|
||||
|
||||
## Gaming-Tipps
|
||||
|
||||
### FPS & Performance
|
||||
|
||||
**In-Game FPS anzeigen:**
|
||||
```bash
|
||||
# MangoHUD (alle Spiele):
|
||||
mangohud %command%
|
||||
|
||||
# Steam Launch Options:
|
||||
MANGOHUD=1 %command%
|
||||
```
|
||||
|
||||
**CPU/GPU Monitoring:**
|
||||
```bash
|
||||
# Live Monitoring:
|
||||
watch -n1 "nvidia-smi" # NVIDIA
|
||||
watch -n1 "rocm-smi" # AMD
|
||||
```
|
||||
|
||||
### Shader Cache
|
||||
|
||||
```bash
|
||||
# Cache Location:
|
||||
~/.cache/nvidia-smi # NVIDIA
|
||||
/tmp/mesa_shader_cache # Mesa/AMD
|
||||
|
||||
# Cache Clear (bei Performance-Problemen):
|
||||
rm -rf ~/.cache/nvidia-smi
|
||||
```
|
||||
|
||||
### Proton Experimental
|
||||
|
||||
Beste Kompatibilität, aber weniger stabil:
|
||||
|
||||
1. Steam → Settings → Compatibility
|
||||
2. "Use Steam Play for other titles" ✅
|
||||
3. Wähle: "Proton (Experimental)" oder "Proton-GE-Latest"
|
||||
|
||||
### Spiele-Verzeichnis (Optional)
|
||||
|
||||
Separate HDD/SSD für Spiele:
|
||||
|
||||
```nix
|
||||
# In configuration.nix:
|
||||
environment.variables.STEAM_DIR = "/mnt/games/steam";
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Steam startet nicht
|
||||
|
||||
```bash
|
||||
# Fresh Steam Start:
|
||||
rm -rf ~/.steam ~/.steampath
|
||||
steam
|
||||
|
||||
# Oder Debug:
|
||||
steam -console
|
||||
```
|
||||
|
||||
### Spiel crasht sofort
|
||||
|
||||
1. Unterschiedliche Proton-Version probieren
|
||||
2. Kompatibilität-Verzeichnis löschen:
|
||||
```bash
|
||||
rm -rf ~/.steam/steamapps/compatdata/[GAME_ID]/
|
||||
```
|
||||
3. GPU-Treiber updaten:
|
||||
```bash
|
||||
nix flake update
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
### Black Screen bei Hyprland + NVIDIA
|
||||
|
||||
```bash
|
||||
# NVIDIA mit Hyprland braucht Special Config
|
||||
# Siehe: ~/.config/hypr/hyprland.conf
|
||||
|
||||
env = LIBVA_DRIVER_NAME,nvidia
|
||||
env = XDG_SESSION_TYPE,wayland
|
||||
```
|
||||
|
||||
### Desktop lädt nicht
|
||||
|
||||
Fallback zu KDE:
|
||||
```bash
|
||||
# Edit configuration.nix:
|
||||
desktopConfig = ./modules/desktop/kde.nix;
|
||||
|
||||
# Terminal (Ctrl+Alt+F2):
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Performance-Tipps
|
||||
|
||||
### Vor Gaming-Session
|
||||
|
||||
```bash
|
||||
# 1. Cleanup
|
||||
sudo nix-collect-garbage
|
||||
|
||||
# 2. Thermale Kühlung prüfen
|
||||
sensors
|
||||
|
||||
# 3. GameMode starten
|
||||
gamemode
|
||||
|
||||
# 4. Prozesse minimieren
|
||||
killall firefox # oder andere Hintergrund-Apps
|
||||
```
|
||||
|
||||
### Nvidia-spezifisch
|
||||
|
||||
```bash
|
||||
# Driver-Info:
|
||||
nvidia-smi
|
||||
|
||||
# Power Limit erhöhen:
|
||||
nvidia-smi -pm 1
|
||||
nvidia-smi -pl [WATTAGE]
|
||||
```
|
||||
|
||||
### AMD-spezifisch
|
||||
|
||||
```bash
|
||||
# GPU Info:
|
||||
rocm-smi
|
||||
|
||||
# Übertaktung (variabler):
|
||||
# Nutze CoreCtrl GUI
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Nützliche Links
|
||||
|
||||
- [NixOS Manual](https://nixos.org/manual/)
|
||||
- [ProtonDB](https://protondb.com/) - Spiel-Kompatibilität checken
|
||||
- [WineHQ](https://www.winehq.org/) - Wine/Proton Docs
|
||||
- [Chaotic-Nyx](https://github.com/chaotic-cx/nyx) - Aktuelle Treiber
|
||||
|
||||
---
|
||||
|
||||
## Tips für Freunde (Kopiervorlage)
|
||||
|
||||
Falls Freunde dein Template nutzen:
|
||||
|
||||
1. **Clone:**
|
||||
```bash
|
||||
git clone <DEIN_REPO> mein-nixos
|
||||
cd mein-nixos
|
||||
```
|
||||
|
||||
2. **Anpassen:**
|
||||
- `hostName` in configuration.nix
|
||||
- `userName` ändern
|
||||
- `desktopConfig` & `graphicsConfig` wählen
|
||||
|
||||
3. **Build:**
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
4. **Docs lesen:**
|
||||
- [`COSMIC_SETUP_ANLEITUNG.md`](COSMIC_SETUP_ANLEITUNG.md) (falls COSMIC)
|
||||
- Dieses Guide (Gaming & Customization)
|
||||
|
||||
---
|
||||
|
||||
**Viel Erfolg beim Customizen! 🚀**
|
||||
@@ -0,0 +1,171 @@
|
||||
# Kernel Auswahl & Gaming-Tweaks
|
||||
|
||||
Dieses Repo nutzt eine sichtbare Kernel-Auswahl in `configuration.nix`. Der aktuell aktive Standard ist CachyOS:
|
||||
|
||||
```nix
|
||||
kernelConfig = ./modules/kernel/linux-cachyos.nix;
|
||||
```
|
||||
|
||||
Wenn du nichts änderst, nutzt dein System also den CachyOS-Kernel plus die Basis-Tweaks aus `modules/base.nix`.
|
||||
|
||||
---
|
||||
|
||||
## Empfehlung
|
||||
|
||||
| Situation | Empfehlung |
|
||||
|-----------|------------|
|
||||
| Gaming-PC mit AMD oder NVIDIA | `linux-cachyos.nix` |
|
||||
| Möglichst stabiler Gaming-Desktop | `linux-zen.nix` |
|
||||
| Probleme mit Spezial-Kerneln | `linux-default.nix` |
|
||||
| Security wichtiger als FPS | `linux-hardened.nix` |
|
||||
| Experimentieren und Risiko okay | `linux-xanmod.nix` |
|
||||
|
||||
Kurz gesagt: Starte mit CachyOS. Wenn es Probleme gibt, nimm Zen. Wenn es immer noch Probleme gibt, nimm Default.
|
||||
|
||||
---
|
||||
|
||||
## Kernel wechseln
|
||||
|
||||
Ändere in `configuration.nix` genau diese Zeile:
|
||||
|
||||
```nix
|
||||
kernelConfig = ./modules/kernel/linux-cachyos.nix;
|
||||
```
|
||||
|
||||
Mögliche Werte:
|
||||
|
||||
- `./modules/kernel/linux-default.nix`
|
||||
- `./modules/kernel/linux-zen.nix`
|
||||
- `./modules/kernel/linux-hardened.nix`
|
||||
- `./modules/kernel/linux-cachyos.nix`
|
||||
- `./modules/kernel/linux-xanmod.nix`
|
||||
|
||||
Danach neu bauen:
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
Nach dem Neustart prüfen:
|
||||
|
||||
```bash
|
||||
uname -r
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Kernel-Vergleich
|
||||
|
||||
### CachyOS
|
||||
|
||||
Datei: `modules/kernel/linux-cachyos.nix`
|
||||
|
||||
- Beste Standardwahl in diesem Repo
|
||||
- Gaming- und Desktop-orientiert
|
||||
- Nutzt das Chaotic-Nyx-Ökosystem
|
||||
- Gute Wahl für aktuelle AMD- und NVIDIA-Gaming-Systeme
|
||||
|
||||
### Linux Zen
|
||||
|
||||
Datei: `modules/kernel/linux-zen.nix`
|
||||
|
||||
- Sehr gute Desktop-Responsiveness
|
||||
- Meist konservativer als CachyOS oder Xanmod
|
||||
- Gute Alternative, wenn CachyOS auf einem System nicht sauber läuft
|
||||
|
||||
### Linux Default
|
||||
|
||||
Datei: `modules/kernel/linux-default.nix`
|
||||
|
||||
- Stabiler Standard-Kernel aus nixpkgs
|
||||
- Gute Fallback-Wahl bei Treiber- oder Build-Problemen
|
||||
- Weniger auf Gaming-Latenz optimiert
|
||||
|
||||
### Linux Hardened
|
||||
|
||||
Datei: `modules/kernel/linux-hardened.nix`
|
||||
|
||||
- Mehr Security-Hardening
|
||||
- Kann Performance kosten
|
||||
- Für Gaming normalerweise nicht die beste Wahl
|
||||
|
||||
### Linux Xanmod
|
||||
|
||||
Datei: `modules/kernel/linux-xanmod.nix`
|
||||
|
||||
- Aggressive Performance-Ausrichtung
|
||||
- Eher für Enthusiasten und Tests
|
||||
- Wenn Stabilität wichtiger ist, bleib bei CachyOS oder Zen
|
||||
|
||||
---
|
||||
|
||||
## Was ist in `base.nix`?
|
||||
|
||||
`modules/base.nix` enthält die allgemeinen System- und Gaming-Basics, aber nicht mehr die Kernel-Auswahl selbst.
|
||||
|
||||
Aktiv sind dort unter anderem:
|
||||
|
||||
- `fs.inotify.max_user_watches` für Launcher, Shader-Caches und große Libraries
|
||||
- `vm.max_map_count` für moderne Spiele und Proton
|
||||
- größere Netzwerk-Buffer für Online-Spiele
|
||||
- erhöhte File Descriptors für Steam, Lutris und ähnliche Tools
|
||||
- CPU-Governor `performance` als Default
|
||||
- Firmware, Microcode, Polkit, rtkit und Nix-GC
|
||||
|
||||
Die Kernel-Entscheidung bleibt dadurch an einer Stelle: `kernelConfig` in `configuration.nix`.
|
||||
|
||||
---
|
||||
|
||||
## Extra-Gaming-Tweaks
|
||||
|
||||
Zusätzliche Tweaks werden in `configuration.nix` über einen Boolean geschaltet:
|
||||
|
||||
```nix
|
||||
enableExtraGamingTweaks = true;
|
||||
```
|
||||
|
||||
Das Modul ist aktuell aktiviert und setzt nur zusätzliche, eher experimentelle Parameter wie:
|
||||
|
||||
```nix
|
||||
"idle=nomwait"
|
||||
```
|
||||
|
||||
Wenn du möglichst konservativ bleiben willst, setze den Wert auf `false`. Die wichtigsten Gaming-Basics bleiben trotzdem über `modules/base.nix` aktiv.
|
||||
|
||||
---
|
||||
|
||||
## Vorsicht bei `mitigations=off`
|
||||
|
||||
In `modules/gaming-tweaks.nix` ist `mitigations=off` bewusst nur als Kommentar dokumentiert.
|
||||
|
||||
Das kann in manchen Workloads Performance bringen, deaktiviert aber Schutzmechanismen gegen CPU-Sicherheitslücken. Für einen normalen Online-Gaming-Desktop ist das nicht empfehlenswert.
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
Wenn der Kernel nicht baut:
|
||||
|
||||
```nix
|
||||
kernelConfig = ./modules/kernel/linux-zen.nix;
|
||||
```
|
||||
|
||||
Wenn das System danach immer noch Probleme macht:
|
||||
|
||||
```nix
|
||||
kernelConfig = ./modules/kernel/linux-default.nix;
|
||||
```
|
||||
|
||||
Wenn der Stromverbrauch zu hoch ist:
|
||||
|
||||
```nix
|
||||
powerManagement.cpuFreqGovernor = lib.mkForce "schedutil";
|
||||
```
|
||||
|
||||
Danach jeweils:
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
sudo reboot
|
||||
```
|
||||
@@ -0,0 +1,346 @@
|
||||
# Mesa-Git Anleitung
|
||||
|
||||
Erklärung und Nutzung von Mesa-Git in diesem NixOS-Gaming-Setup.
|
||||
|
||||
---
|
||||
|
||||
## Was ist Mesa-Git?
|
||||
|
||||
**Mesa** ist die Open-Source-Grafikbibliothek für Linux (OpenGL, Vulkan, etc.).
|
||||
|
||||
**Mesa-Git** ist die **neueste Entwicklungsversion** von Mesa, die über **Chaotic-Nyx** bereitgestellt wird:
|
||||
- Jeden Tag neue Commits aus dem Mesa-Repository
|
||||
- Neueste GPU-Treiber-Optimierungen
|
||||
- Neue Features für aktuelle Spiele
|
||||
- **Warnung**: Manchmal instabil, kann Bugs haben
|
||||
|
||||
---
|
||||
|
||||
## Warum ist Mesa-Git in dieser Config?
|
||||
|
||||
Dieses Template fokussiert auf **Gaming mit modernen GPUs**. Mesa-Git bietet:
|
||||
|
||||
✅ **Vorteile:**
|
||||
- Bessere Performance in neuen Spielen
|
||||
- Support für neuere GPUs
|
||||
- Schnellere Fixes für GPU-Bugs
|
||||
- Cutting-Edge Vulkan/OpenGL Features
|
||||
|
||||
⚠️ **Nachteile:**
|
||||
- Manchmal unstabil
|
||||
- Kann seltene Crashes verursachen
|
||||
- Weniger getestet als stabile Mesa-Versionen
|
||||
|
||||
---
|
||||
|
||||
## Wie ist Mesa-Git konfiguriert?
|
||||
|
||||
Die Aktivierung passiert in zwei Dateien:
|
||||
|
||||
### 1. `flake.nix` – Chaotic-Nyx einbinden
|
||||
|
||||
```nix
|
||||
inputs = {
|
||||
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
|
||||
};
|
||||
|
||||
nixConfig = {
|
||||
extra-substituters = [
|
||||
"https://nyx-cache.chaotic.cx/"
|
||||
];
|
||||
extra-trusted-public-keys = [
|
||||
"nyx-cache.chaotic.cx:dJxTrgMC3V3cFfyIiBQDQorG6k1LsqurH/srpMSq7qk="
|
||||
];
|
||||
};
|
||||
```
|
||||
|
||||
**Was das macht:**
|
||||
- Lädt Chaotic-Nyx als Input
|
||||
- Nutzt Chaotic-Nyx Cache (schnellere Builds)
|
||||
- Trusted key für Binär-Cache
|
||||
|
||||
### 2. `modules/chaotic-nyx.nix` – Mesa-Git aktivieren
|
||||
|
||||
```nix
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
chaotic = {
|
||||
mesa-git = {
|
||||
enable = true;
|
||||
fallbackSpecialisation = true;
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
mesa_git
|
||||
];
|
||||
}
|
||||
```
|
||||
|
||||
**Was das macht:**
|
||||
- `enable = true` – Aktiviert Mesa-Git
|
||||
- `fallbackSpecialisation = true` – **Wichtig!** Falls Mesa-Git crasht, bootet automatisch auf stabile Mesa zurück
|
||||
- `allowUnfree = true` – Erlaubt Pakete, die nicht frei sind (oft nötig für Gaming)
|
||||
- `mesa_git` wird als Systempaket installiert
|
||||
|
||||
---
|
||||
|
||||
## Mesa-Git ein/ausschalten
|
||||
|
||||
### Mesa-Git aktivieren (Standard)
|
||||
|
||||
Die Config ist bereits aktiviert. Falls du es deaktiviert hattest:
|
||||
|
||||
**In `modules/chaotic-nyx.nix`:**
|
||||
```nix
|
||||
chaotic = {
|
||||
mesa-git = {
|
||||
enable = true; # ← Mesa-Git an
|
||||
fallbackSpecialisation = true;
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
**Rebuild:**
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
### Mesa-Git deaktivieren (Fallback auf stabile Mesa)
|
||||
|
||||
Wenn Mesa-Git Probleme macht:
|
||||
|
||||
**In `modules/chaotic-nyx.nix`:**
|
||||
```nix
|
||||
chaotic = {
|
||||
mesa-git = {
|
||||
enable = false; # ← Mesa-Git aus
|
||||
fallbackSpecialisation = true;
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
**Rebuild:**
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Fallback-Specialisation
|
||||
|
||||
**Was ist das?**
|
||||
|
||||
`fallbackSpecialisation = true` bedeutet:
|
||||
- NixOS erstellt zwei Kernel-Boot-Optionen
|
||||
- Option 1: **Deine aktuelle Config** (mit Mesa-Git)
|
||||
- Option 2: **Fallback** (ohne Mesa-Git, stabile Mesa)
|
||||
|
||||
**Wenn Mesa-Git crasht:**
|
||||
1. Du siehst beim Boot das Grub-Menü
|
||||
2. Wähle die Fallback-Specialisation (normalerweise unten)
|
||||
3. System bootet mit stabiler Mesa
|
||||
|
||||
**Danach:**
|
||||
```bash
|
||||
# Deaktiviere Mesa-Git in der Config
|
||||
nano modules/chaotic-nyx.nix
|
||||
# enable = false;
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Welche GPU braucht Mesa-Git?
|
||||
|
||||
### ✅ AMD-GPUs (empfohlen für Mesa-Git)
|
||||
|
||||
Mesa-Git funktioniert sehr gut mit:
|
||||
- RDNA (RX 5000er, 6000er, 7000er)
|
||||
- RDNA2 (RX 6000er)
|
||||
- RDNA3 (RX 7000er)
|
||||
|
||||
**Empfehlung:** `mesa-amd.nix` + `mesa-git.enable = true` = perfekt für AMD Gaming
|
||||
|
||||
### ⚠️ Intel iGPU
|
||||
|
||||
Mesa-Git unterstützt Intel-GPUs, kann aber:
|
||||
- Manchmal unstabil sein
|
||||
- Performance-Probleme haben
|
||||
- Nicht empfohlen für Gaming
|
||||
|
||||
### ❌ NVIDIA-GPUs
|
||||
|
||||
**NVIDIA nutzt NICHT Mesa!** NVIDIA nutzt proprietäre Treiber:
|
||||
- `nvidia.nix` – proprietäre Treiber (unabhängig von Mesa)
|
||||
- `nvidia-open.nix` – Open-Source Treiber (auch nicht Mesa)
|
||||
|
||||
Mesa-Git ist bei NVIDIA irrelevant.
|
||||
|
||||
---
|
||||
|
||||
## Performance-Unterschiede
|
||||
|
||||
### Mit Mesa-Git
|
||||
|
||||
```bash
|
||||
# Glmark2 Score (höher = besser):
|
||||
# RX 6700 XT: ~3500 (mit Mesa-Git)
|
||||
```
|
||||
|
||||
**Vorteile:**
|
||||
- 5-15% bessere Performance in neuen Spielen
|
||||
- Support für neuere Spiele-Features
|
||||
- Bessere Vulkan-Optimierungen
|
||||
|
||||
### Ohne Mesa-Git (stabile Mesa)
|
||||
|
||||
```bash
|
||||
# Glmark2 Score:
|
||||
# RX 6700 XT: ~3200 (ohne Mesa-Git)
|
||||
```
|
||||
|
||||
**Vorteile:**
|
||||
- Stabiler
|
||||
- Weniger Crashes
|
||||
- Langfristig unterstützt
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Problem: System bootet nicht nach Mesa-Git Aktivierung
|
||||
|
||||
**Lösung:**
|
||||
1. Beim Boot Grub-Menü öffnen (normalerweise nicht sichtbar, mehrmals ESC drücken)
|
||||
2. Wähle die Specialisation mit "fallback" oder älterem Kernel
|
||||
3. Nach erfolgreicher Boot:
|
||||
```bash
|
||||
# Deaktiviere Mesa-Git
|
||||
sudo nano /root/nixos-config/modules/chaotic-nyx.nix
|
||||
# enable = false;
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
### Problem: Mesa-Git crasht in Spielen
|
||||
|
||||
**Schritt 1: Fallback-Boot**
|
||||
- Grub-Menü → Fallback-Specialisation wählen
|
||||
|
||||
**Schritt 2: Deaktiviere Mesa-Git**
|
||||
```bash
|
||||
# In modules/chaotic-nyx.nix
|
||||
enable = false;
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
**Schritt 3: Überprüfe GPU-Treiber**
|
||||
```bash
|
||||
glxinfo | grep "OpenGL version"
|
||||
```
|
||||
|
||||
### Problem: Chaotic-Nyx Cache funktioniert nicht
|
||||
|
||||
**Lösung:**
|
||||
Flake neu bauen (ignoriert Cache):
|
||||
```bash
|
||||
cd ~/nixos-config
|
||||
nix flake update
|
||||
sudo nixos-rebuild switch --flake .#template --no-substitute
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Performance testen
|
||||
|
||||
### Mit Mesa-Git testen
|
||||
|
||||
Aktiviere Mesa-Git und teste die Performance:
|
||||
|
||||
```bash
|
||||
# Benchmark starten
|
||||
glmark2
|
||||
|
||||
# Spiel-Test
|
||||
steam # Starte ein 3D-Spiel
|
||||
# In Steam Launch Options: mangohud %command%
|
||||
# Schau dir die FPS an
|
||||
```
|
||||
|
||||
### Vergleich: Mit/ohne Mesa-Git
|
||||
|
||||
**Schritt 1: Mit Mesa-Git**
|
||||
```bash
|
||||
# modules/chaotic-nyx.nix: enable = true
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
glmark2 # Score notieren
|
||||
```
|
||||
|
||||
**Schritt 2: Ohne Mesa-Git**
|
||||
```bash
|
||||
# modules/chaotic-nyx.nix: enable = false
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
glmark2 # Score notieren
|
||||
```
|
||||
|
||||
**Vergleich:** Unterschied ~5-15%
|
||||
|
||||
---
|
||||
|
||||
## Chaotic-Nyx Update-Frequenz
|
||||
|
||||
Mesa-Git wird täglich aktualisiert:
|
||||
|
||||
```bash
|
||||
# Aktualisiere auf neueste Mesa-Git Version
|
||||
nix flake update
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
**Häufigkeit:**
|
||||
- Täglich neue Commits
|
||||
- Wöchentlich getestet
|
||||
- Monatlich "major releases"
|
||||
|
||||
---
|
||||
|
||||
## Weitere Optionen in Chaotic-Nyx
|
||||
|
||||
`modules/chaotic-nyx.nix` kann auch enthalten:
|
||||
|
||||
```nix
|
||||
chaotic = {
|
||||
mesa-git = {
|
||||
enable = true;
|
||||
fallbackSpecialisation = true;
|
||||
};
|
||||
|
||||
# Optional: Andere Chaotic-Pakete
|
||||
# linux-hardened.enable = true;
|
||||
# gamescope.enable = true;
|
||||
};
|
||||
```
|
||||
|
||||
Mehr Infos: https://github.com/chaotic-cx/nyx
|
||||
|
||||
---
|
||||
|
||||
## Empfehlung
|
||||
|
||||
| Situation | Empfehlung |
|
||||
|-----------|-----------|
|
||||
| **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 |
|
||||
| **Cutting-Edge Gaming** | Mesa-Git aktivieren |
|
||||
| **Production/Workstation** | Mesa-Git deaktivieren |
|
||||
|
||||
---
|
||||
|
||||
**Kurz:** Mesa-Git = Neueste AMD-GPU-Treiber für Gaming. Gut für Gaming, fallback hilft bei Problemen.
|
||||
|
||||
Alles klar? 🚀
|
||||
@@ -0,0 +1,376 @@
|
||||
# Podman & Distrobox - Container auf NixOS
|
||||
|
||||
Anleitung zur Nutzung von Podman und Distrobox für Container-Workloads.
|
||||
|
||||
---
|
||||
|
||||
## Was ist Podman?
|
||||
|
||||
**Podman** = Daemonless Container Runtime (Docker-Ersatz)
|
||||
|
||||
```
|
||||
Docker = Client-Server Architektur
|
||||
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
|
||||
|
||||
---
|
||||
|
||||
## Was ist Distrobox?
|
||||
|
||||
**Distrobox** = Einfache Linux-Container (für Nicht-Gaming)
|
||||
|
||||
```
|
||||
Podman = Low-Level Container-Runtime
|
||||
Distrobox = High-Level Container Management
|
||||
```
|
||||
|
||||
**Use Case:**
|
||||
- Du brauchst Ubuntu-Pakete, aber nutzt NixOS
|
||||
- Python/Node.js Development-Umgebung
|
||||
- Spezielle Tools die nur in anderen Distros verfügbar sind
|
||||
- Sandbox für unbekannte Software
|
||||
|
||||
**Nicht für Gaming!** (GameMode/Steam brauchen Bare Metal)
|
||||
|
||||
---
|
||||
|
||||
## Aktivieren
|
||||
|
||||
### In `configuration.nix` einfügen
|
||||
|
||||
```nix
|
||||
imports = [
|
||||
./modules/containers/podman-distrobox.nix
|
||||
];
|
||||
```
|
||||
|
||||
### Rebuild
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Podman Basics
|
||||
|
||||
### Docker-Kompatibilität
|
||||
|
||||
Nach Aktivierung funktioniert `docker`-CLI:
|
||||
|
||||
```bash
|
||||
# Diese Befehle funktionieren:
|
||||
docker ps
|
||||
docker run ubuntu:latest echo "Hello"
|
||||
docker pull alpine
|
||||
docker exec
|
||||
docker build
|
||||
|
||||
# Im Hintergrund: Podman
|
||||
```
|
||||
|
||||
### Container als User starten
|
||||
|
||||
```bash
|
||||
# Kein sudo nötig!
|
||||
podman run -it ubuntu:latest bash
|
||||
|
||||
# Oder
|
||||
docker run -it alpine:latest sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Distrobox Basics
|
||||
|
||||
### Distrobox-Container erstellen
|
||||
|
||||
```bash
|
||||
# Ubuntu-Container
|
||||
distrobox create --name ubuntu-dev --image ubuntu:latest
|
||||
|
||||
# Alpine-Container
|
||||
distrobox create --name alpine-work --image alpine:latest
|
||||
|
||||
# Fedora-Container
|
||||
distrobox create --name fedora --image fedora:latest
|
||||
```
|
||||
|
||||
### Container betreten
|
||||
|
||||
```bash
|
||||
distrobox enter ubuntu-dev
|
||||
# Du bist jetzt in: Ubuntu Bash
|
||||
|
||||
apt update && apt install python3
|
||||
# Ubuntu-Pakete installieren
|
||||
|
||||
exit
|
||||
# Zurück zu NixOS
|
||||
```
|
||||
|
||||
### Container auflisten
|
||||
|
||||
```bash
|
||||
distrobox list
|
||||
|
||||
# Output:
|
||||
# NAME | STATUS | IMAGE NAME
|
||||
# ubuntu-dev | CREATED | ubuntu:latest
|
||||
# alpine-work | EXITED | alpine:latest
|
||||
```
|
||||
|
||||
### Container löschen
|
||||
|
||||
```bash
|
||||
distrobox rm ubuntu-dev
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Praktische Beispiele
|
||||
|
||||
### Beispiel 1: Python Development mit Ubuntu Libs
|
||||
|
||||
```bash
|
||||
# Container erstellen
|
||||
distrobox create --name python-dev --image ubuntu:latest
|
||||
|
||||
# Betreten
|
||||
distrobox enter python-dev
|
||||
|
||||
# Ubuntu-Packages installieren
|
||||
apt update && apt install -y python3-pip libpython3-dev
|
||||
pip install numpy scipy pandas
|
||||
|
||||
# Work machen
|
||||
python3 script.py
|
||||
|
||||
exit
|
||||
```
|
||||
|
||||
### Beispiel 2: Node.js in Alpine
|
||||
|
||||
```bash
|
||||
distrobox create --name nodejs --image node:18-alpine
|
||||
|
||||
distrobox enter nodejs
|
||||
|
||||
npm install -g yarn pnpm
|
||||
npm run dev
|
||||
|
||||
exit
|
||||
```
|
||||
|
||||
### Beispiel 3: Spezielle Tools (z.B. Ubuntu-Spezific)
|
||||
|
||||
```bash
|
||||
distrobox create --name ubuntu-tools --image ubuntu:latest
|
||||
|
||||
distrobox enter ubuntu-tools
|
||||
|
||||
# Ubuntu-spezifische Tools installieren
|
||||
apt install -y snap # oder andere Ubuntu-only Tools
|
||||
|
||||
exit
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Heim-Verzeichnis Zugriff
|
||||
|
||||
Distrobox automatische Mounts:
|
||||
|
||||
```bash
|
||||
# Von NixOS:
|
||||
echo "test" > ~/test.txt
|
||||
|
||||
# Im Container:
|
||||
distrobox enter ubuntu-dev
|
||||
ls ~ # Zeigt ~/test.txt (selbes Verzeichnis!)
|
||||
```
|
||||
|
||||
**Wichtig:** Dateien sind Heim-verzeichnis-übergreifend sichtbar!
|
||||
|
||||
---
|
||||
|
||||
## Netzwerk im Container
|
||||
|
||||
### Zugriff auf Host
|
||||
|
||||
```bash
|
||||
distrobox enter ubuntu-dev
|
||||
|
||||
# Kann auf deinen Host zugreifen
|
||||
curl http://localhost:8080 # Wenn Host-Service läuft
|
||||
ping 8.8.8.8 # Internet funktioniert
|
||||
```
|
||||
|
||||
### Container veröffentlichen
|
||||
|
||||
```bash
|
||||
# Container als Service:
|
||||
docker run -d -p 8080:80 nginx
|
||||
|
||||
# Dann von außen:
|
||||
curl http://localhost:8080
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Performance
|
||||
|
||||
### Podman vs. Docker
|
||||
|
||||
```
|
||||
Docker: 100%
|
||||
Podman: 99-101% (kaum Unterschied)
|
||||
```
|
||||
|
||||
Podman ist manchmal sogar schneller!
|
||||
|
||||
### Distrobox Overhead
|
||||
|
||||
```
|
||||
Native NixOS: 100%
|
||||
Im Distrobox: 98-99% (minimal)
|
||||
```
|
||||
|
||||
Distrobox ist fast keine Verlangsamung.
|
||||
|
||||
---
|
||||
|
||||
## Tipps & Tricks
|
||||
|
||||
### Persistent Storage
|
||||
|
||||
```bash
|
||||
# Container mit Volume
|
||||
distrobox create --name work --image ubuntu:latest \
|
||||
--volume /home/user/projects:/mnt/projects
|
||||
|
||||
distrobox enter work
|
||||
ls /mnt/projects # Deine Projekte!
|
||||
```
|
||||
|
||||
### Container-Shell in NixOS starten
|
||||
|
||||
```bash
|
||||
# Shortcut für häufig benutzte Container
|
||||
alias ubuntu-dev="distrobox enter ubuntu-dev"
|
||||
|
||||
ubuntu-dev # Schnell drin!
|
||||
```
|
||||
|
||||
### Distrobox "Export" (Advanced)
|
||||
|
||||
```bash
|
||||
# Programm aus Container in Host-Desktop sichtbar machen
|
||||
distrobox export --app APPNAME --bin /usr/bin/program
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Problem: "podman: command not found"
|
||||
|
||||
```bash
|
||||
# Überprüfe ob aktiviert:
|
||||
grep -r "podman" /etc/nixos/configuration.nix
|
||||
|
||||
# Falls nicht: Zu configuration.nix hinzufügen
|
||||
imports = [ ./modules/containers/podman-distrobox.nix ];
|
||||
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
### Problem: Container haben kein Internet
|
||||
|
||||
```bash
|
||||
# DNS prüfen
|
||||
podman run alpine ping 8.8.8.8
|
||||
|
||||
# Fallback: DNS manuell setzen
|
||||
podman run --dns=8.8.8.8 alpine ping 8.8.8.8
|
||||
|
||||
# Oder in Datei konfigurieren
|
||||
~/.config/containers/containers.conf:
|
||||
dns_servers = ["8.8.8.8", "1.1.1.1"]
|
||||
```
|
||||
|
||||
### Problem: Docker alias funktioniert nicht
|
||||
|
||||
```bash
|
||||
# Überprüfe Podman-Docker Compat:
|
||||
ls -la /run/podman/podman.sock
|
||||
|
||||
# Falls nicht da: Neustart
|
||||
systemctl --user restart podman
|
||||
|
||||
# Oder in nix.conf:
|
||||
environment.variables.DOCKER_HOST = "unix:///run/podman/podman.sock";
|
||||
```
|
||||
|
||||
### Problem: "Too many open files"
|
||||
|
||||
```bash
|
||||
# File descriptors erhöhen in gaming-tweaks.nix
|
||||
# Oder manuell:
|
||||
ulimit -n 524288
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Für Freunde: Erklärung
|
||||
|
||||
### Einfach
|
||||
|
||||
```
|
||||
Podman = Docker für NixOS
|
||||
Distrobox = Einfache Linux-Umgebung in Container
|
||||
|
||||
Nutzen wenn:
|
||||
- Du brauchst Ubuntu-Pakete
|
||||
- Python/Node.js Environment
|
||||
- Isolierte Software-Testing
|
||||
```
|
||||
|
||||
### NICHT für Gaming!
|
||||
|
||||
```
|
||||
❌ Spiele laufen nicht in Distrobox
|
||||
❌ GameMode funktioniert nicht im Container
|
||||
❌ GPU-Zugriff kompliziert
|
||||
|
||||
✅ Nutze Bare Metal für Gaming
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Checkliste
|
||||
|
||||
- [ ] Modul in `configuration.nix` importiert
|
||||
- [ ] Rebuild durchgeführt
|
||||
- [ ] `podman run alpine echo "test"` funktioniert
|
||||
- [ ] `distrobox` Befehl verfügbar
|
||||
- [ ] Container erstellt & betreten funktioniert
|
||||
|
||||
---
|
||||
|
||||
## Weitere Ressourcen
|
||||
|
||||
- Podman Docs: https://docs.podman.io/
|
||||
- Distrobox GitHub: https://github.com/89luca89/distrobox
|
||||
- OCI Images: https://hub.docker.com/ (auch mit Podman nutzbar)
|
||||
|
||||
---
|
||||
|
||||
**Podman ist dein neuer Docker-Ersatz auf NixOS!** 🐳→📦
|
||||
@@ -0,0 +1,446 @@
|
||||
# Für Freunde: Komplette Anleitung zum Repo nutzen
|
||||
|
||||
Alles, was du und deine Freunde wissen müssen, um dieses Repo erfolgreich zu nutzen.
|
||||
|
||||
---
|
||||
|
||||
## Das Repo beim Klonen - Was passiert?
|
||||
|
||||
### Schritt 1: Repo klonen
|
||||
|
||||
```bash
|
||||
git clone <REPO-URL> ~/nixos-config
|
||||
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
|
||||
|
||||
**Was musst du trotzdem prüfen?**
|
||||
- `hardware-configuration.nix` muss zu deinem Rechner passen.
|
||||
- Auf einem anderen PC solltest du sie durch die lokal generierte Datei aus `/etc/nixos/` ersetzen.
|
||||
|
||||
### Schritt 2: Inputs prüfen oder aktualisieren
|
||||
|
||||
Nach dem Klonen kannst du direkt mit den gepinnten Versionen bauen. Wenn du bewusst aktualisieren willst:
|
||||
|
||||
```bash
|
||||
cd ~/nixos-config
|
||||
nix flake update
|
||||
```
|
||||
|
||||
**Was das macht:**
|
||||
- Lädt alle Inputs herunter (nixpkgs, chaotic-nyx)
|
||||
- Aktualisiert `flake.lock`
|
||||
- Speichert exakte Versionen aller Abhängigkeiten
|
||||
|
||||
**Wichtig:** `flake.lock` ist nicht hardware-spezifisch. Sie pinnt nur die Versionen der Flake-Inputs. Hardware-spezifisch ist vor allem `hardware-configuration.nix`.
|
||||
|
||||
---
|
||||
|
||||
## Warum `flake.lock` im Repo ist
|
||||
|
||||
**Gut - das ist absichtlich!**
|
||||
|
||||
### Ohne `flake.lock`
|
||||
|
||||
```
|
||||
Problem: Jeder Build kann andere Versionen von nixpkgs und Chaotic-Nyx ziehen.
|
||||
- Alice baut heute
|
||||
- Bob baut in zwei Wochen
|
||||
- Charlie baut nach einem größeren nixpkgs-Update
|
||||
→ schwerer vergleichbare Fehler und weniger reproduzierbare Builds
|
||||
```
|
||||
|
||||
### Mit `flake.lock`
|
||||
|
||||
```
|
||||
Alle starten mit denselben Input-Versionen.
|
||||
- weniger Überraschungen beim ersten Build
|
||||
- Updates passieren bewusst mit `nix flake update`
|
||||
- Änderungen an nixpkgs/chaotic lassen sich als Git-Diff sehen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Stable vs Unstable - Was sollte im Repo sein?
|
||||
|
||||
### Aktuelle Wahl: `nixos-unstable` ✅ (Richtig!)
|
||||
|
||||
**flake.nix sagt:**
|
||||
```nix
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
```
|
||||
|
||||
**Warum unstable für dieses Repo?**
|
||||
|
||||
| Kriterium | Stable | Unstable |
|
||||
|-----------|--------|----------|
|
||||
| **Stabilität** | Hoch | Mittel (aber gut getestet) |
|
||||
| **Aktuelle Treiber** | ⚠️ Verzögert | ✅ Täglich neu |
|
||||
| **Gaming** | Funktioniert | **Optimal** |
|
||||
| **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.
|
||||
|
||||
### Stable braucht man NUR wenn...
|
||||
|
||||
```nix
|
||||
# Nur in speziellen Fällen:
|
||||
# - Production/Server (nicht Gaming!)
|
||||
# - Maximale Stabilität wichtiger als aktuelle Treiber
|
||||
# - Ältere Hardware (bekommt keine neuen Features)
|
||||
|
||||
# NICHT empfohlen für dieses Gaming-Template!
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Kompletter Setup-Prozess für Freunde
|
||||
|
||||
### Phase 1: Vorbereitung (vor Clone)
|
||||
|
||||
**1.1 Frische NixOS-Installation**
|
||||
|
||||
Du/deine Freunde brauchen eine funktionierende NixOS-Installation:
|
||||
|
||||
```bash
|
||||
# Auf der Installations-CD
|
||||
# Normaler NixOS-Installer durchlaufen
|
||||
# Irgendeine Config aussuchen (wird überschrieben)
|
||||
```
|
||||
|
||||
**1.2 Nach Installation: Reboot & Login**
|
||||
|
||||
```bash
|
||||
sudo reboot
|
||||
# Login mit den Credentials vom Installer
|
||||
```
|
||||
|
||||
### Phase 2: Repository Setup
|
||||
|
||||
**2.1 Repo klonen**
|
||||
|
||||
```bash
|
||||
git clone <DEIN-REPO> ~/nixos-config
|
||||
cd ~/nixos-config
|
||||
```
|
||||
|
||||
**2.2 Hardware-Config hinzufügen**
|
||||
|
||||
Die aktuelle Hardware-Config vom System kopieren:
|
||||
|
||||
```bash
|
||||
sudo cp /etc/nixos/hardware-configuration.nix ~/nixos-config/
|
||||
```
|
||||
|
||||
**2.3 Configuration anpassen**
|
||||
|
||||
```bash
|
||||
nano ~/nixos-config/configuration.nix
|
||||
```
|
||||
|
||||
Ändere diese 3 Werte:
|
||||
|
||||
```nix
|
||||
hostName = "mein-gaming-pc"; # Computername
|
||||
userName = "max"; # Benutzername
|
||||
fullName = "Max Mustermann"; # Vollständiger Name
|
||||
```
|
||||
|
||||
**2.4 Desktop & GPU wählen**
|
||||
|
||||
```nix
|
||||
desktopConfig = ./modules/desktop/kde.nix; # oder cosmic-max.nix, gnome.nix, etc.
|
||||
graphicsConfig = ./modules/graphics/mesa-amd.nix; # oder nvidia.nix, etc.
|
||||
```
|
||||
|
||||
### Phase 3: Flake vorbereiten
|
||||
|
||||
**3.1 Cachix überprüfen (Beschleunigung!)**
|
||||
|
||||
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
|
||||
|
||||
**Mehr Infos:** Siehe [`CACHIX_ANLEITUNG.md`](CACHIX_ANLEITUNG.md)
|
||||
|
||||
**3.2 Flake Inputs aktualisieren (optional)**
|
||||
|
||||
```bash
|
||||
cd ~/nixos-config
|
||||
nix flake update
|
||||
```
|
||||
|
||||
**Das macht:**
|
||||
- Lädt alle Packages herunter
|
||||
- Aktualisiert `flake.lock`
|
||||
- Speichert exakte Versionen
|
||||
|
||||
**Dauer:** meist wenige Minuten, je nach Internetverbindung.
|
||||
|
||||
Für den ersten Build kannst du diesen Schritt überspringen und die Versionen aus dem Repo nutzen.
|
||||
|
||||
### Phase 4: System bauen & starten
|
||||
|
||||
**4.1 NixOS Rebuild**
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
```
|
||||
|
||||
**Das macht:**
|
||||
- Baut NixOS mit deiner Config
|
||||
- Installiert alle Packages
|
||||
- Aktiviert sofort (kein Reboot nötig für erste Konfiguration)
|
||||
|
||||
**Dauer:** 10-60 Minuten (beim ersten Mal)
|
||||
|
||||
**Mögliche Fehler:**
|
||||
- "Network is unreachable" → Netzwerk prüfen
|
||||
- "Insufficient disk space" → Zu wenig Platz auf /nix
|
||||
- Irgendwas mit nixpkgs → `nix flake update` und retry
|
||||
|
||||
**4.2 Reboot (optional aber empfohlen)**
|
||||
|
||||
```bash
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
Nach dem Reboot:
|
||||
- Neuer Desktop startet
|
||||
- Gaming-Stack ist installiert
|
||||
- Alles ready!
|
||||
|
||||
---
|
||||
|
||||
## Nach dem Setup: Erste Schritte
|
||||
|
||||
### 1. System überprüfen
|
||||
|
||||
```bash
|
||||
# Desktop prüfen
|
||||
echo $DESKTOP_SESSION
|
||||
|
||||
# GPU prüfen
|
||||
glxinfo | grep "OpenGL"
|
||||
|
||||
# Mesa-Git aktiv?
|
||||
glxinfo | grep "Mesa"
|
||||
|
||||
# Gaming-Tools
|
||||
which steam
|
||||
which gamescope
|
||||
which mangohud
|
||||
```
|
||||
|
||||
### 2. Steam einrichten
|
||||
|
||||
```bash
|
||||
steam
|
||||
# Größe/Auflösung anpassen
|
||||
# Account einloggen
|
||||
# Controller Settings prüfen
|
||||
```
|
||||
|
||||
### 3. Erstes Spiel testen
|
||||
|
||||
```bash
|
||||
# In Steam: Ein Spiel aus der Bibliothek starten
|
||||
# (oder Proton-Spiel ausprobieren)
|
||||
# Performance mit mangohud checken
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Mesa-Git für Freunde erklären
|
||||
|
||||
### Einfache Erklärung:
|
||||
|
||||
```
|
||||
Mesa-Git = Täglich neue GPU-Treiber für AMD
|
||||
|
||||
Aktiviert in: modules/chaotic-nyx.nix
|
||||
- enable = true → aktiv (Standard)
|
||||
- enable = false → deaktiviert
|
||||
|
||||
Wenn's crasht: Fallback bootet automatisch auf stabile Version
|
||||
```
|
||||
|
||||
### Falls Freunde fragen: "Warum Mesa-Git?"
|
||||
|
||||
Antworte:
|
||||
- **AMD-Nutzer:** "Neueste Treiber = bessere Gaming-Performance"
|
||||
- **NVIDIA-Nutzer:** "Ignorieren, ihr nutzt proprietäre Treiber"
|
||||
- **Intel:** "Funktioniert, aber nicht optimiert für Gaming"
|
||||
|
||||
### Falls Mesa-Git Probleme macht:
|
||||
|
||||
```bash
|
||||
# In modules/chaotic-nyx.nix:
|
||||
enable = false; # Mesa-Git aus
|
||||
|
||||
sudo nixos-rebuild switch --flake .#template
|
||||
# System bootet auf stabile Mesa
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Häufige Probleme & Lösungen
|
||||
|
||||
### Problem: `flake.lock` oder Flake-Inputs machen Probleme
|
||||
|
||||
**Symptom:**
|
||||
```
|
||||
nixpkgs/chaotic kann nicht geladen werden oder ein Input wirkt veraltet
|
||||
```
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Stelle sicher, du bist im Repo-Verzeichnis
|
||||
cd ~/nixos-config
|
||||
nix flake update
|
||||
```
|
||||
|
||||
### Problem: Kein Internet beim Build
|
||||
|
||||
**Lösung:**
|
||||
```bash
|
||||
# Netzwerk testen
|
||||
ping github.com
|
||||
|
||||
# Falls offline: Später probieren
|
||||
# Falls Online aber langsam: Geduld haben (kann 30+ min dauern)
|
||||
```
|
||||
|
||||
### Problem: Eigene `flake.lock` von einem Fork?
|
||||
|
||||
Wenn du aus einem Fork kommst und bewusst neu pinnen willst:
|
||||
```bash
|
||||
nix flake update
|
||||
```
|
||||
|
||||
### Problem: "Chaotic-Nyx Cache nicht erreichbar"
|
||||
|
||||
**Das ist normal!** Fallback auf lokales Bauen:
|
||||
```bash
|
||||
sudo nixos-rebuild switch --flake .#template --no-substitute
|
||||
# Dauert länger, aber funktioniert
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Checkliste für Freunde
|
||||
|
||||
**Vor Setup:**
|
||||
- [ ] Frische NixOS-Installation
|
||||
- [ ] Internet funktioniert
|
||||
- [ ] Genug Platz auf Festplatte (~50 GB frei)
|
||||
|
||||
**Beim Setup:**
|
||||
- [ ] Repo geklont
|
||||
- [ ] Hardware-Config kopiert
|
||||
- [ ] configuration.nix angepasst
|
||||
- [ ] Desktop & GPU gewählt
|
||||
- [ ] `nix flake update` ausgeführt
|
||||
|
||||
**Nach Setup:**
|
||||
- [ ] Desktop startet
|
||||
- [ ] Gaming-Tools erkannt (`which steam`)
|
||||
- [ ] GPU erkannt (`glxinfo`)
|
||||
- [ ] Erstes Spiel testet
|
||||
|
||||
**Optional:**
|
||||
- [ ] Steam Account einrichten
|
||||
- [ ] Controller testen
|
||||
- [ ] Performance benchmarken
|
||||
|
||||
---
|
||||
|
||||
## Version-Management für Freunde
|
||||
|
||||
### Warum `flake.lock` committen?
|
||||
|
||||
```bash
|
||||
# Immer committen, wenn du die System-Basis bewusst aktualisierst:
|
||||
flake.lock
|
||||
```
|
||||
|
||||
**Grund:**
|
||||
```
|
||||
flake.lock = reproduzierbare Input-Versionen
|
||||
- nixpkgs bleibt nachvollziehbar
|
||||
- chaotic bleibt nachvollziehbar
|
||||
- Updates lassen sich im Git-Diff reviewen
|
||||
|
||||
→ Wenn etwas kaputtgeht, weißt du genauer, seit welchem Update.
|
||||
```
|
||||
|
||||
### Richtig versionieren
|
||||
|
||||
```bash
|
||||
# ✅ 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:
|
||||
- hardware-configuration.nix
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Forks & Customization für Freunde
|
||||
|
||||
### Falls Freunde das Repo forken wollen
|
||||
|
||||
```bash
|
||||
# 1. Fork machen
|
||||
github.com/dein-name/nixos → Fork auf github.com/dein-name/nixos
|
||||
|
||||
# 2. Clone forked version
|
||||
git clone https://github.com/dein-name/nixos ~/nixos-config
|
||||
|
||||
# 3. Anpassen
|
||||
cd ~/nixos-config
|
||||
# Alle Anpassungen durchführen
|
||||
|
||||
# 4. Eigene changes committen
|
||||
git add modules/packages.nix
|
||||
git commit -m "Meine Pakete hinzugefügt"
|
||||
git push
|
||||
|
||||
# Falls Updates vom Original gewünscht:
|
||||
git remote add upstream https://github.com/dein-name/nixos.git
|
||||
git pull upstream main
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Zusammenfassung für Freunde
|
||||
|
||||
| Frage | Antwort |
|
||||
|-------|---------|
|
||||
| **Brauche ich flake.lock?** | Ja, sie ist im Repo und pinnt die Input-Versionen |
|
||||
| **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` |
|
||||
| **Kann ich meine Anpassungen speichern?** | Ja, in Unterordnern oder neuen Modulen |
|
||||
|
||||
---
|
||||
|
||||
**Alles klar? Jetzt können deine Freunde direkt loslegen!** 🚀
|
||||
Reference in New Issue
Block a user