7.1 KiB
7.1 KiB
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:
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:
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:
nixConfig = { ... }
Methode 2: In /etc/nix/nix.conf (für alle Flakes)
sudo nano /etc/nix/nix.conf
Hinzufügen:
substituters = https://cache.nixos.org/ https://nyx-cache.chaotic.cx/
trusted-public-keys = nyx-cache.chaotic.cx:dJxTrgMC3V3cFfyIiBQDQorG6k1LsqurH/srpMSq7qk=
Dann neuladen:
sudo systemctl restart nix-daemon
Cachix Performance-Check
Cache-Hits prüfen
# 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?
# 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
# Online: https://www.cachix.org/
# Gratis Tier mit 5 GB
Schritt 2: Cachix CLI installieren
nix-shell -p cachix
# Oder:
nix profile install nixpkgs#cachix
Schritt 3: Authentifizieren
cachix authtoken
# Token in https://app.cachix.org/tokens einsehen
# Eingeben wenn gefordert
Schritt 4: Cache pushen
# 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
# 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:
# .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
# Überprüfe in flake.nix:
grep trusted-public-keys flake.nix
# Sollte exakt wie bei Cachix stehen
Ursache 2: Cache-Server offline
# 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
sudo systemctl restart nix-daemon
Problem: "Signature doesn't match"
Error: Signature doesn't match
Lösung:
# 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
# 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:
# 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 updatewird Cache-Config geladen - Beim
nixos-rebuildsollte 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
# 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! 🚀