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.
De YAML à Nix
Section intitulée « De YAML à Nix »- 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 :
just generateUne seule source de vérité (etc/config.yaml) est transformée en code Nix
déterministe, consommé par le framework via flake.nix.
Les commandes
Section intitulée « Les commandes »Le générateur expose une commande par cible. just generate les enchaîne
toutes ; on peut aussi en invoquer une seule.
| Commande | Sortie | Contenu |
|---|---|---|
hosts | var/generated/hosts.nix | Hôtes : profils, services, tags colmena. |
users | var/generated/users.nix | Utilisateurs : profils, groupes. |
network | var/generated/network.nix | Topologie : zones, DNS, VPN. |
disko | usr/machines/<hôte>/disko.nix | Partitionnement par hôte. |
doc | */ref/modules.mdx | Référence des modules (documentation). |
just generate # tout régénérer (via le Justfile)just codegen # régénérer uniquement la référence des modules (doc)Contexte d’exécution
Section intitulée « Contexte d’exécution »Le générateur tourne de deux façons, choisies automatiquement :
- Co-développement (sources +
cargoprésents) →cargo run: boucle de compilation rapide pendant qu’on modifie le générateur. - Release (pas de checkout local) → binaire
dnf-generatorfourni par le devShell du framework (nix develop github:darkone-linux/...).