Aller au contenu

Le générateur

Le générateur (src/generator/, écrit en Rust) transforme la configuration déclarative etc/config.yaml en code Nix consommé par le framework.

  • Entrée : etc/config.yaml → hôtes, utilisateurs, réseau, services.
  • Sortie : var/generated/hosts.nix, users.nix, network.nix.

Ces fichiers sont générés : on ne les édite jamais à la main. Pour les régénérer après une modification de la configuration :

Fenêtre de terminal
just generate

Une seule source de vérité (etc/config.yaml) est transformée en code Nix déterministe, consommé par le framework via flake.nix.

Diagram

Le générateur expose une commande par cible. just generate les enchaîne toutes ; on peut aussi en invoquer une seule.

CommandeSortieContenu
hostsvar/generated/hosts.nixHôtes : profils, services, tags colmena.
usersvar/generated/users.nixUtilisateurs : profils, groupes.
networkvar/generated/network.nixTopologie : zones, DNS, VPN.
diskousr/machines/<hôte>/disko.nixPartitionnement par hôte.
doc*/ref/modules.mdxRéférence des modules (documentation).
Fenêtre de terminal
just generate # tout régénérer (via le Justfile)
just codegen # régénérer uniquement la référence des modules (doc)

Le générateur tourne de deux façons, choisies automatiquement :

  • Co-développement (sources + cargo présents) → cargo run : boucle de compilation rapide pendant qu’on modifie le générateur.
  • Release (pas de checkout local) → binaire dnf-generator fourni par le devShell du framework (nix develop github:darkone-linux/...).