Initial template repo

This commit is contained in:
2026-06-16 20:55:00 +02:00
commit 65a547ad1a
39 changed files with 3628 additions and 0 deletions
+376
View File
@@ -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!** 🚀