Lesson 0000 · groupdir-infra

Tooling vorbereiten

Nix installieren, Flakes aktivieren, nix develop und später nix build nutzen.

Einleitung

Alle weiteren Lessons setzen voraus, dass auf deinem Rechner der Paketmanager Nix läuft und Flakes eingeschaltet sind. Dann kannst du im Repo groupdir-infra eine Dev-Shell öffnen (nix develop) und später Konfigurationen lokal bauen (nix build). Terraform (tofu), just und Colmena kommen über diese Shell, nicht als Systempakete, die du manuell suchst.

Heute: Installation und die zwei Befehle, die du ständig brauchst. Noch keine DNS- oder Terraform-Details.

1. Nix installieren

Offizielle Anleitung: nixos.org/download bzw. nix.dev/install-nix. Auf Linux (systemd, empfohlen: Multi-User):

curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install \
  | sh -s -- --daemon

Danach neues Terminal öffnen und prüfen:

nix --version

Unter Arch kannst du Nix alternativ über die Distribution installieren (siehe nix.dev). Wichtig ist nur: der Befehl nix ist verfügbar.

2. Flakes und nix-command aktivieren

groupdir-infra ist ein Flake-Projekt (flake.nix + flake.lock). Die moderne CLI (nix develop, nix build) braucht die Features nix-command und flakes. Siehe nix.dev: Flakes.

Dauerhaft für deinen User (Datei anlegen oder ergänzen):

mkdir -p ~/.config/nix
echo 'experimental-features = nix-command flakes' >> ~/.config/nix/nix.conf

Einmalig pro Befehl geht auch: nix --experimental-features 'nix-command flakes' …. Für den Kurs lohnt die dauerhafte Einstellung.

Auf NixOS setzt man stattdessen in der Konfiguration: nix.settings.experimental-features = [ "nix-command" "flakes" ];

3. Dev-Shell: nix develop

Im geklonten Repo:

cd path/to/groupdir-infra
nix develop

Das wertet devShells.default aus der flake.nix aus und legt u. a. tofu, just, colmena, nixfmt in den PATH. Du bleibst in einer Subshell; mit exit verlässt du sie wieder.

Kontrolle: tofu version, just --list, colmena --help sollten antworten.

4. Später: nix build

nix build baut ein Flake-Output und legt (standardmäßig) einen Symlink ./result an. In späteren Lessons brauchst du das, um NixOS-Konfigurationen lokal zu prüfen, ohne zu deployen. Beispiele (Syntax merken, Details kommen bei Modul-Optionen):

# generisches Beispiel (Hallo-Welt aus nixpkgs)
nix build nixpkgs#hello

# typisch im Repo: eine nixosConfiguration bauen
nix build .#nixosConfigurations.lab-gateway.config.system.build.toplevel

Wenn der Build durchläuft, ist die Config syntaktisch und auswertbar in Ordnung. Das ersetzt weder Terraform-Plan noch Colmena-Apply; es ist der lokale Nix-Check.

Checkliste

  1. nix --version zeigt eine Version
  2. Flakes aktiv (kein Fehler „experimental feature ‚flakes‘“)
  3. In groupdir-infra: nix develop startet, tofu ist im PATH
  4. Optional: nix build nixpkgs#hello erzeugt result/

Üben

Retrieval

In welcher Reihenfolge richtest du die Basis ein?

Was macht nix develop in diesem Repo?

Wozu dient nix build im Selbststudium hier?

Primärquelle

Install: Nix download. Flakes: nix.dev Flakes (Abschnitt zu experimental features).

Im Repo: flake.nix (devShells.default) und README („First use“: nix develop).

Kompakt: Referenz: Nix-Tooling.