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 :
configuration commune
↓
fiche du poste
↓
fiche utilisateur
↓
moteur de provisionnement commun
Exemples fournis :
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
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 :
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 :
sudo nixos-rebuild build \
-I nixos-config=/home/localadm/nixos-workstations/hosts/bureautix-01.nix
Si le build est correct :
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 :
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 :
sudo nixos-rebuild build --impure --flake .#bureautix-02
Puis :
sudo nixos-rebuild switch --impure --flake .#bureautix-02
Pour Mike :
sudo nixos-rebuild switch --impure --flake .#bureautix-03
Ajouter un nouvel utilisateur
Créer une fiche users/<identifiant>.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/<nom-du-poste>.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 :
- création automatique du compte
systemd-homed; - espace personnel LUKS2 ;
- affichage du compte dans SDDM ;
- changement du mot de passe à la première connexion ;
- création du code PIN de la YubiKey ;
- association de la YubiKey au chiffrement.
La logique de ces opérations n'a pas été modifiée dans v1.9.0.