# NixOS Workstations — v1.8 LAB Cette branche valide un poste NixOS/KDE dont le compte utilisateur est géré par `systemd-homed` et dont le home est chiffré en LUKS2. ## Parcours cible ```text localadm │ └── nixos-rebuild switch │ ├── logiciels ├── systemd-homed ├── création automatique d'Alice │ └── /home/alice.home → LUKS2 └── SDDM │ ▼ Alice se connecte avec le mot de passe temporaire │ ▼ assistant première session │ ┌───────┼────────────┐ ▼ ▼ ▼ nouveau PIN FIDO2 enrôlement mot de vierge FIDO2 homed passe │ ▼ home déverrouillable par mot de passe OU YubiKey+PIN ``` ## Principes - `localadm` reste un compte NixOS classique d'administration locale. - `alice` n'est jamais déclarée dans `users.users` : elle appartient exclusivement à `systemd-homed`. - Le déploiement précrée Alice automatiquement avant SDDM. - Le home d'Alice est `/home/alice.home`, conteneur LUKS2 monté sur `/home/alice` pendant la session. - Aucun `pam_u2f`. - Aucun `u2f-mappings`. - La YubiKey démarre sans PIN ; Alice choisit son premier PIN. - L'enrôlement FIDO2 est stocké dans le record `systemd-homed`. - Le mot de passe reste un moyen de déverrouillage de secours. ## Déploiement LAB Le mot de passe temporaire est : ```text LaboTest@1980 ``` Il est volontairement connu pour le laboratoire et n'est pas un secret de production. Depuis `localadm` : ```bash cd ~/nixos-workstations sudo nixos-rebuild switch -I nixos-config="$PWD/configuration.nix" ``` Un simple `nixos-rebuild build` construit la génération mais ne l'active pas ; il ne peut donc pas exécuter la précréation du compte sur le système courant. ## Première connexion Alice sélectionne son compte dans SDDM et utilise le mot de passe temporaire. L'assistant se lance automatiquement et impose trois opérations réussies : 1. remplacement du mot de passe temporaire ; 2. création du premier PIN sur une YubiKey FIDO2 vierge ; 3. enrôlement de cette YubiKey dans le home chiffré `systemd-homed`. Les secrets sont transmis aux helpers par stdin puis à `homectl` par le mécanisme `CREDENTIALS_DIRECTORY`. Aucun mot de passe ni PIN n'est placé dans les arguments de processus. ## Recovery key La v1.8 **ne crée volontairement aucune recovery key avant ou pendant la première session**. Cela évite le problème validé en LAB où `homectl update` demandait la recovery key existante lors de la synchronisation des clés de chiffrement. L'ajout et l'escrow d'une recovery key d'administration feront l'objet d'une étape distincte. ## SDDM et comptes homed sous NixOS Le greeter SDDM reçoit explicitement le chemin des modules NSS NixOS : ```nix services.displayManager.sddm.settings = { Users = { MinimumUid = 1000; MaximumUid = 60513; }; General = { GreeterEnvironment = "QT_WAYLAND_SHELL_INTEGRATION=layer-shell,LD_LIBRARY_PATH=${config.system.nssModules.path}"; }; }; ``` Ce réglage est nécessaire sur le LAB pour que le greeter puisse énumérer Alice, dont l'UID `systemd-homed` est dans la plage 60001–60513. ## Arborescence importante ```text configuration.nix modules/ ├── homed.nix ├── users.nix ├── security.nix ├── software.nix └── workstation-setup.nix workstation-setup/ ├── CMakeLists.txt ├── org.raspot.nixosworkstations.setup.desktop └── src/ ├── CMakeLists.txt ├── Config.h.in ├── Main.qml ├── ProvisioningBackend.cpp ├── ProvisioningBackend.h └── main.cpp ``` `/etc/nixos/hardware-configuration.nix` reste local au poste et n'est pas versionné dans le dépôt partagé. ## État LAB Le workflow doit encore être validé de bout en bout sur le poste réel avec la v1.8. Ne pas considérer cette archive comme une version production.