Nix Flakes

Wir haben uns heute angeschaut, wie nix-Flakes aufgebaut sind, was man damit machen kann und was für Vor- und Nachteile sie bringen.

Publiziert von Patrik Stutz am 01.05.2023

Nix hatte lange Zeit kein einheitliches Format für “Pakete”, was zu einem gewissen Wildwuchs geführt hat, wie Nix-Pakete aufgebaut sind und wie diese importiert werden.

Mit Nix-Flakes versucht die Nix Community nun schon seit einer Weile zu vereinheitlichen.

Bei einem Nix-Flake Projekt gibt es nun statt einer “default.nix” oder “shell.nix” Datei neu eine “flake.nix” und eine “flake.lock”-Datei. In ersterer werden die vom Paket angebotenen “outputs” sowie deren Abhängigkeiten mal grundsätzlich definiert. In letzterer werden dann automatisch vom CLI die ganz genauen Versionen der Abhängigkeiten hinterlegt.

Dies funktioniert ähnlich wie z.B. bei Node.js wo man auch eine “package.json”-Datei und eine “package-lock.json”-Datei hat.

Wie das mit den Nix-Flakes genau funkioniert kann man unter anderen bei folgenden Links nachlesen: