xXMortiXx
Newbie
- Registriert
- Juni 2026
- Beiträge
- 7
1. Reproduzierbarkeit & Updates
Dein Einwand ist richtig: Wenn du heute nixpkgs (das Paketrepository) ziehst, bekommst du andere Versionen als in drei Monaten. Die Config allein ist also nicht deterministisch – solange du keine Version fixierst.
Aber: NixOS verwendet standardmäßig einen Lockfile (bei Flakes heißt der flake.lock). Der wird automatisch aktualisiert, wenn du nix flake update ausführst, und legt exakt fest, welcher Snapshot von nixpkgs verwendet wird. Wenn du die Config + flake.lock auf einen anderen Rechner kopierst, bekommst du garantiert dasselbe System – gleiche Kernelversion, gleiche Paketversionen, alles identisch. Das ist die eigentliche "Superkraft" von NixOS.
2. Pinning & Updates
Genau – normalerweise definiert man keine konkreten Versionen. Stattdessen referenziert man einen nixpkgs-Input, der auf einen Branch zeigt (z.B. nixos-unstable oder nixos-26.05). Der flake.lock schnappt sich dann den aktuellen Commit dieses Branches und friert ihn ein.
Config + flake.lock = reproduzierbar. Nur Config ohne Lock = fließende Versionsstände. In der Praxis verwendet aber quasi jeder Flakes genau deshalb.
Dein Einwand ist richtig: Wenn du heute nixpkgs (das Paketrepository) ziehst, bekommst du andere Versionen als in drei Monaten. Die Config allein ist also nicht deterministisch – solange du keine Version fixierst.
Aber: NixOS verwendet standardmäßig einen Lockfile (bei Flakes heißt der flake.lock). Der wird automatisch aktualisiert, wenn du nix flake update ausführst, und legt exakt fest, welcher Snapshot von nixpkgs verwendet wird. Wenn du die Config + flake.lock auf einen anderen Rechner kopierst, bekommst du garantiert dasselbe System – gleiche Kernelversion, gleiche Paketversionen, alles identisch. Das ist die eigentliche "Superkraft" von NixOS.
2. Pinning & Updates
Genau – normalerweise definiert man keine konkreten Versionen. Stattdessen referenziert man einen nixpkgs-Input, der auf einen Branch zeigt (z.B. nixos-unstable oder nixos-26.05). Der flake.lock schnappt sich dann den aktuellen Commit dieses Branches und friert ihn ein.
- nix flake update → aktualisiert den Lockfile auf den neuesten Commit (neue Paketversionen)
- Ohne nix flake update → bleibt alles exakt gleich, auch nach Monaten
- Für spezielle Fälle kannst du auch gezielt einen bestimmten Commit im Lockfile eintragen (url = github:NixOS/nixpkgs/<commit-hash>)
Config + flake.lock = reproduzierbar. Nur Config ohne Lock = fließende Versionsstände. In der Praxis verwendet aber quasi jeder Flakes genau deshalb.