# NixOS Workstations — v1.9.0 modulaire Cette version généralise le provisionnement validé en v1.8.7 afin que le même moteur puisse préparer plusieurs postes pour des utilisateurs différents. ## Principe Le dépôt sépare désormais trois responsabilités : ```text configuration commune ↓ fiche du poste ↓ fiche utilisateur ↓ moteur de provisionnement commun ``` Exemples fournis : ```text bureautix-01 -> Alice bureautix-02 -> Bob bureautix-03 -> Mike ``` Le moteur de provisionnement dans `modules/` et `workstation-setup/` ne contient plus de dépendance à Alice, Bob ou Mike. ## Arborescence utile ```text flake.nix configuration.nix hosts/ bureautix-01.nix bureautix-02.nix bureautix-03.nix users/ alice.nix bob.nix mike.nix modules/ provisioning.nix homed.nix workstation-setup.nix users.nix software.nix security.nix ``` ## Association poste / utilisateur La fiche du poste est la source de vérité. `hosts/bureautix-02.nix` importe par exemple : ```text configuration.nix users/bob.nix ``` Le build de `bureautix-02` prépare donc automatiquement Bob. Le nom de l'utilisateur n'est pas passé dans la commande de déploiement. ## Configuration matérielle `/etc/nixos/hardware-configuration.nix` reste local à chaque PC et n'est pas stocké dans le dépôt. Pour cette raison, les builds Flake sont actuellement lancés avec `--impure` afin d'autoriser cet unique import local. ## Migration sûre depuis v1.8.7 Pour le premier test, conserver le poste `bureautix-01` associé à Alice et utiliser d'abord le mode classique : ```bash sudo nixos-rebuild build \ -I nixos-config=/home/localadm/nixos-workstations/hosts/bureautix-01.nix ``` Si le build est correct : ```bash sudo nixos-rebuild switch \ -I nixos-config=/home/localadm/nixos-workstations/hosts/bureautix-01.nix ``` Cette activation active également `nix-command` et `flakes`. ## Utilisation avec Flake Depuis la racine du dépôt, générer une première fois le verrou de dépendances : ```bash nix flake lock ``` Puis l'ajouter au dépôt afin que tous les postes utilisent exactement la même révision de Nixpkgs. Exemple pour Bob : ```bash sudo nixos-rebuild build --impure --flake .#bureautix-02 ``` Puis : ```bash sudo nixos-rebuild switch --impure --flake .#bureautix-02 ``` Pour Mike : ```bash sudo nixos-rebuild switch --impure --flake .#bureautix-03 ``` ## Ajouter un nouvel utilisateur Créer une fiche `users/.nix`. Elle ne contient que les données propres à l'utilisateur, par exemple son identifiant et son nom affiché. Aucun changement dans le moteur C++/QML n'est nécessaire. ## Ajouter un nouveau poste Créer `hosts/.nix`, importer `configuration.nix` et la fiche utilisateur voulue, puis ajouter ce poste dans `nixosConfigurations` de `flake.nix`. ## Provisionnement utilisateur Le parcours validé en v1.8.7 reste identique : 1. création automatique du compte `systemd-homed` ; 2. espace personnel LUKS2 ; 3. affichage du compte dans SDDM ; 4. changement du mot de passe à la première connexion ; 5. création du code PIN de la YubiKey ; 6. association de la YubiKey au chiffrement. La logique de ces opérations n'a pas été modifiée dans v1.9.0.