Files
nixos-vorlagen/docs/CACHIX_ANLEITUNG.md
2026-06-16 21:49:01 +02:00

7.1 KiB
Raw Permalink Blame History

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 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

# 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!