7.7 KiB
✨ NixOS First Login
Assistant de première connexion pour postes NixOS / KDE Plasma
Une expérience de première connexion plein écran, claire et moderne, pensée pour industrialiser la préparation des postes NixOS.
🚀 Objectif
NixOS First Login fournit un assistant graphique de première connexion inspiré des assistants d'installation d'un système d'exploitation.
L'utilisateur est accompagné pas à pas pour préparer son environnement :
👋 Bienvenue → 🔐 Mot de passe → 🔑 YubiKey → ✅ Poste prêt
L'interface est développée en Qt Quick / QML, s'intègre naturellement à KDE Plasma 6 et fonctionne en plein écran.
🧭 Parcours utilisateur
| Étape | Fonction |
|---|---|
| 👋 Bienvenue | Présentation de l'assistant et du processus de configuration |
| 🔐 Mot de passe | Saisie du mot de passe temporaire, choix du nouveau mot de passe et confirmation |
| 🛡️ Robustesse | Indicateur visuel de qualité du mot de passe, sans blocage d'un mot de passe faible |
| 👁️ Affichage des secrets | Bouton œil pour afficher ou masquer mots de passe et PIN |
| 🔑 YubiKey | Saisie du PIN temporaire, choix du nouveau PIN et confirmation |
| ✅ Poste prêt | Synthèse visuelle de la configuration terminée |
✨ UX / UI
🖥️ Interface plein écran
L'assistant occupe l'écran afin de créer un parcours simple et sans distraction, proche d'un assistant d'installation classique.
🧩 Navigation guidée
Les étapes sont présentées dans des colonnes de largeur fixe afin de conserver un alignement propre, quel que soit le libellé.
👁️ Affichage des mots de passe et PIN
Chaque champ secret possède un bouton permettant de basculer entre :
•••••••• 👁
↓
MonSecret ◉
📊 Robustesse du mot de passe
Le mot de passe reçoit une indication visuelle :
- 🔴 Faible
- 🟠 Moyen
- 🔵 Bon
- 🟢 Très bon
💡 Cette indication est informative uniquement. Un mot de passe faible n'est volontairement pas bloqué.
🔒 Parcours verrouillé
Tant que les informations nécessaires ne sont pas renseignées :
- ⛔ impossible de passer à l'étape suivante ;
- ⛔ impossible de quitter depuis l'interface ;
- ⛔
Ctrl+Qn'est pas proposé ; - ⛔ une tentative de fermeture de la fenêtre avant la fin est interceptée ;
- ✅ les confirmations doivent correspondre avant de continuer.
🏗️ Architecture
nixos-workstations/
├── configuration.nix
├── LICENSE
├── COMMERCIAL-LICENSE.md
├── first-login-ui/
│ ├── CMakeLists.txt
│ ├── org.raspot.nixosfirstlogin.desktop
│ └── src/
│ ├── CMakeLists.txt
│ ├── main.cpp
│ └── Main.qml
└── modules/
└── first-login-ui.nix
Le matériel propre à chaque poste n'est pas stocké dans le dépôt commun :
/etc/nixos/hardware-configuration.nix
reste généré localement par NixOS.
⚙️ Intégration NixOS
Le module est importé depuis configuration.nix :
imports = [
/etc/nixos/hardware-configuration.nix
./modules/software.nix
./modules/users.nix
./modules/security.nix
./modules/yubikey-first-login.nix
./modules/first-login-ui.nix
];
🧪 Validation d'une nouvelle version
Pour conserver une procédure de déploiement prudente :
1️⃣ Construire sans activer
sudo nixos-rebuild build \
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
2️⃣ Vérifier l'activation prévue
sudo nixos-rebuild dry-activate \
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
3️⃣ Activer temporairement
sudo nixos-rebuild test \
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
4️⃣ Lancer l'interface
nixos-first-login-ui
5️⃣ Rendre la configuration persistante après validation
sudo nixos-rebuild switch \
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
🛡️ Sécurité
🔐 Les mécanismes sensibles doivent rester séparés de l'interface graphique.
L'architecture cible conserve une séparation claire :
┌───────────────────────────────┐
│ Qt Quick / QML │
│ Interface utilisateur │
└───────────────┬───────────────┘
│
▼
┌───────────────────────────────┐
│ Backend contrôlé │
├───────────────────────────────┤
│ Mot de passe → passwd NixOS │
│ PIN YubiKey → ykman │
└───────────────────────────────┘
L'interface ne doit jamais modifier directement /etc/shadow ni réimplémenter PAM.
⚠️ État de cette V4 : l'interface graphique est validée, mais ce nouveau frontend n'exécute encore directement ni
passwdniykman. Le module historiqueyubikey-first-login.nixreste distinct tant que le backend de la nouvelle UI n'a pas été intégré et testé.
🧰 Technologies
📜 Licence
Le projet est distribué sous PolyForm Noncommercial License 1.0.0.
✅ Autorisé
- utilisation non commerciale ;
- étude du code ;
- modification ;
- partage dans les limites prévues par la licence.
🚫 Exploitation commerciale
Toute exploitation commerciale nécessite une autorisation ou une licence commerciale distincte accordée par le titulaire des droits.
Voir :
ℹ️ PolyForm Noncommercial est une licence source-available non commerciale et non une licence open source au sens OSI.
🎯 Vision
L'objectif à terme est de pouvoir préparer un poste de manière industrialisée :
💻 Installation NixOS
↓
📦 Déploiement de la configuration commune
↓
👤 Première connexion utilisateur
↓
🔐 Personnalisation du mot de passe
↓
🔑 Personnalisation de la YubiKey
↓
✅ Poste opérationnel
💙 NixOS • KDE Plasma • FIDO2
Des postes reproductibles sans sacrifier l'expérience utilisateur.