NixOS First Login

Assistant de première connexion pour postes NixOS / KDE Plasma

NixOS KDE Plasma Qt QML Status License

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+Q n'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 passwd ni ykman. Le module historique yubikey-first-login.nix reste distinct tant que le backend de la nouvelle UI n'a pas été intégré et testé.


🧰 Technologies

Nix Qt Quick QML KDE FIDO2


📜 Licence

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.

S
Description
No description provided
Readme
513 KiB
Languages
QML 39.5%
C++ 36.6%
Nix 21.9%
CMake 1.8%
C 0.2%