diff --git a/COMMERCIAL-LICENSE.md b/COMMERCIAL-LICENSE.md index ddd36d1..85f08ff 100644 --- a/COMMERCIAL-LICENSE.md +++ b/COMMERCIAL-LICENSE.md @@ -9,4 +9,4 @@ a separate written license from the copyright holder. To obtain commercial permission, contact the copyright holder before use. -Copyright © 2026 Olivier Bro. +Copyright © 2026 Olivier. diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md new file mode 100644 index 0000000..43e1515 --- /dev/null +++ b/DEPLOYMENT.md @@ -0,0 +1,89 @@ +# Déploiement du candidat production + +## 1. Préparer les fichiers locaux propres au poste + +Le matériel reste local : + +```text +/etc/nixos/hardware-configuration.nix +``` + +Pour une nouvelle création du compte `alice`, aucun fichier de secret local n'est nécessaire dans ce lab. + +Le mot de passe temporaire est déclaré dans `modules/users.nix` : + +```text +LaboTest@1980 +``` + +Avec `users.mutableUsers = true`, il sert à la création initiale du compte puis le mot de passe choisi par l'utilisateur est conservé. + +> En vraie production, le dépôt étant privé, la stratégie de mot de passe initial pourra être adaptée sans modifier le fonctionnement de l'assistant. + + +## 2. Remplacer l'ancien assistant + +La version production utilise : + +```text +modules/workstation-setup.nix +workstation-setup/ +``` + +L'ancien `modules/yubikey-first-login.nix` et l'ancien frontend d'aperçu `modules/first-login-ui.nix` / `first-login-ui/` ne doivent plus être importés. `modules/security.nix` reste utilisé. + +## 3. Construire sans activer + +```bash +cd ~/nixos-workstations + +sudo nixos-rebuild build \ + -I nixos-config=/home/localadm/nixos-workstations/configuration.nix +``` + +## 4. Examiner l'activation + +```bash +sudo nixos-rebuild dry-activate \ + -I nixos-config=/home/localadm/nixos-workstations/configuration.nix +``` + +## 5. Activer temporairement + +```bash +sudo nixos-rebuild test \ + -I nixos-config=/home/localadm/nixos-workstations/configuration.nix +``` + +Avant de continuer, vérifier immédiatement que `localadm` fonctionne toujours. + +## 6. Valider le parcours utilisateur + +Ouvrir une session `alice` avec la YubiKey et le PIN temporaire, puis : + +1. saisir le mot de passe temporaire ; +2. choisir et confirmer le mot de passe personnel ; +3. vérifier que l'étape ne passe à YubiKey qu'après succès réel de `passwd` ; +4. saisir le PIN temporaire de la YubiKey ; +5. choisir et confirmer le nouveau PIN ; +6. vérifier qu'un mauvais PIN ne déclenche aucune nouvelle tentative automatique ; +7. terminer l'assistant ; +8. se déconnecter/reconnecter et vérifier que l'assistant ne revient plus ; +9. vérifier l'authentification YubiKey + nouveau PIN ; +10. vérifier le mot de passe local comme mécanisme de secours. + +Marqueurs attendus : + +```text +~/.local/state/nixos-workstations/password-initialized +~/.local/state/nixos-workstations/yubikey-pin-initialized +``` + +## 7. Passer réellement en production + +Uniquement après la validation complète : + +```bash +sudo nixos-rebuild switch \ + -I nixos-config=/home/localadm/nixos-workstations/configuration.nix +``` diff --git a/LICENSE b/LICENSE index d2f8204..78222eb 100644 --- a/LICENSE +++ b/LICENSE @@ -6,7 +6,7 @@ This software is licensed under the PolyForm Noncommercial License 1.0.0. Official license terms: https://polyformproject.org/licenses/noncommercial/1.0.0/ -Required Notice: Copyright © 2026 Olivier Bro. +Required Notice: Copyright © 2026 Olivier. Commercial use is not granted by this repository license. Any commercial exploitation requires a separate prior written license from the copyright holder. diff --git a/MIGRATION.md b/MIGRATION.md new file mode 100644 index 0000000..e2017aa --- /dev/null +++ b/MIGRATION.md @@ -0,0 +1,59 @@ +# Migration vers le setup de production + +Cette version remplace les deux prototypes précédents par une seule brique : + +```text +modules/workstation-setup.nix +workstation-setup/ +``` + +`modules/security.nix` reste conservé. + +## Depuis la racine du dépôt + +Après avoir copié les nouveaux fichiers dans `~/nixos-workstations`, supprimer les anciennes briques si elles sont encore suivies par Git : + +```bash +cd ~/nixos-workstations + +git rm -f modules/yubikey-first-login.nix 2>/dev/null || true +git rm -f modules/first-login-ui.nix 2>/dev/null || true +git rm -rf first-login-ui 2>/dev/null || true +git rm -f hardware-configuration.nix 2>/dev/null || true +``` + +Le `configuration.nix` de cette version importe uniquement : + +```nix +imports = [ + /etc/nixos/hardware-configuration.nix + ./modules/software.nix + ./modules/users.nix + ./modules/security.nix + ./modules/workstation-setup.nix +]; +``` + +## Vérifier le diff avant tout build + +```bash +git status --short +git diff -- configuration.nix modules/users.nix modules/security.nix modules/workstation-setup.nix +``` + +Le fichier `/etc/nixos/hardware-configuration.nix` n'est jamais remplacé par le dépôt. + +## Important pour un nouveau poste + +Aucun fichier `/etc/nixos/secrets/...` n'est requis dans cette version lab. + +`alice` reçoit son mot de passe temporaire à la création via `initialHashedPassword` dans `modules/users.nix` : + +```text +LaboTest@1980 +``` + +Avec `users.mutableUsers = true`, le mot de passe personnalisé ensuite par l'utilisateur est conservé. + + +Ensuite suivre `PRODUCTION-CHECKLIST.md`. diff --git a/configuration.nix b/configuration.nix index 34086eb..02fd9fa 100644 --- a/configuration.nix +++ b/configuration.nix @@ -6,10 +6,14 @@ ./modules/software.nix ./modules/users.nix ./modules/security.nix - ./modules/yubikey-first-login.nix - ./modules/first-login-ui.nix + ./modules/workstation-setup.nix ]; + nixosWorkstations.workstationSetup = { + enable = true; + user = "alice"; + }; + # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; @@ -34,7 +38,6 @@ }; services.xserver.enable = true; - services.displayManager.sddm.enable = true; services.desktopManager.plasma6.enable = true;