Files
nixos-vorlagen/docs/CACHIX_ANLEITUNG.md
T
2026-06-16 20:55:00 +02:00

377 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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!** 🚀