2026-08-19 14:13:25 +02:00
2026-08-18 17:31:50 +02:00
2026-08-19 15:23:39 +02:00

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

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 :

LaboTest@1980

Il est volontairement connu pour le laboratoire et n'est pas un secret de production.

Depuis localadm :

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 :

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 6000160513.

Arborescence importante

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.

S
Description
No description provided
Readme
513 KiB
Languages
QML 39.5%
C++ 36.6%
Nix 21.9%
CMake 1.8%
C 0.2%