NixOS Spickzettel
Kurzreferenz für die häufigsten NixOS-Kommandos: System updaten, nix shell nutzen,
Pakete einmalig ausführen und nach Paketen suchen.
System updaten
System-Konfiguration neu bauen und aktivieren (nach Änderungen an /etc/nixos/configuration.nix
oder dem Flake):
sudo nixos-rebuild switch
Nur testen (aktiviert erst beim nächsten Boot als Default, aber sofort für die aktuelle Session):
sudo nixos-rebuild test
Wenn mit Flakes gearbeitet wird:
sudo nixos-rebuild switch --flake /etc/nixos#hostname
Channels aktualisieren (klassisches, nicht-Flake-Setup):
sudo nix-channel --update
Alte Generationen aufräumen (Speicherplatz freigeben):
sudo nix-collect-garbage -d
nix shell nutzen
Startet eine temporäre Shell mit den angegebenen Paketen, ohne sie dauerhaft zu installieren:
nix shell nixpkgs#ripgrep nixpkgs#fd
Danach sind rg und fd in der aktuellen Shell verfügbar, verschwinden aber nach dem Verlassen
der Shell wieder. Für das klassische (nicht-Flake) Äquivalent:
nix-shell -p ripgrep fd
Ein Paket einmalig ausführen (ohne Config-Eintrag)
Ideal, um ein Tool kurz auszuprobieren, ohne es in configuration.nix einzutragen:
nix run nixpkgs#hello
Klassisches Äquivalent:
nix-shell -p hello --run hello
Nach Paketen suchen
Über die Kommandozeile (Flakes/neues CLI):
nix search nixpkgs firefox
Alternativ über die Weboberfläche: https://search.nixos.org/packages
Nach NixOS-Optionen suchen (z. B. für configuration.nix):
man configuration.nix
Weboberfläche für Optionen: https://search.nixos.org/options
Need to know
- Deklarativ statt manuell: Runtime-Änderungen wie
sysctl foo=barvon Hand oder ein manuell installiertes Paket überleben keinen Reboot bzw. werden beim nächstenswitchüberschrieben. Alles Dauerhafte gehört inconfiguration.nix/flake.nix. switchvs.bootvs.test:switchbaut, aktiviert sofort und setzt den Eintrag als Boot-Default.bootbaut und setzt den Boot-Default, aktiviert aber erst beim nächsten Neustart.testaktiviert sofort, ohne den Boot-Default zu ändern (praktisch zum Ausprobieren, ein Absturz wird beim nächsten Reboot automatisch rückgängig gemacht).- Flakes sehen nur, was Git kennt: Neue Dateien müssen mindestens per
git addgetrackt sein (nicht zwingend committet), sonst ignoriert der Flake-Build sie stillschweigend, mit teils verwirrenden Fehlermeldungen. - Home-Manager ist hier als NixOS-Modul eingebunden, nicht standalone. Ein normaler
nixos-rebuild switchübernimmt daher auch Änderungen anhome.nix, ein separateshome-manager switchist nicht nötig.
Best Practices
- Vor jedem
switchdie Syntax prüfen, ohne gleich zu bauen:nix-instantiate --parse configuration.nix - Bei riskanteren Änderungen erst nur bauen, ohne zu aktivieren, um Eval-/Build-Fehler ohne
Downtime abzufangen:
sudo nixos-rebuild build - Config-Repo ist git-versioniert: vor jedem
switchcommitten, damit jede funktionierende (oder kaputte) Version nachvollziehbar bleibt und sich pergit revertzurückrollen lässt. - Keine Secrets direkt in
configuration.nixablegen. Der Wert landet im Klartext im Git-Repo und im Nix-Store, wo er für alle lokalen Nutzer lesbar ist. Für Passwörter/Tokens eignen sichsops-nixoderagenix.
Nützliche Hinweise
- Rollback bei kaputtem Rebuild:
sudo nixos-rebuild switch --rollback, oder im Boot-Menü eine ältere Generation auswählen. - Generationen auflisten:
sudo nix-env --list-generations --profile /nix/var/nix/profiles/system - Lokale Options-/Manpage-Doku, passend zur eigenen installierten Version und offline
verfügbar:
nixos-helpbzw.man configuration.nix. - Flake-Inputs aktualisieren:
nix flake updateaktualisiert alle Inputs inflake.lock,nix flake lock --update-input nixpkgsnur einen einzelnen. - Vorsicht mit
nix-collect-garbage -d: löscht alte Generationen inklusive der Möglichkeit, dorthin zurückzurollen. Vorher sicherstellen, dass die aktuelle Generation stabil läuft.
No comments to display
No comments to display