Files
nixos-workstations/README.md
T

141 lines
3.2 KiB
Markdown

# 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/<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.