Files
nixos-workstations/README.md
T

3.2 KiB

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 :

  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.