Téléverser les fichiers vers "/"
This commit is contained in:
@@ -0,0 +1,59 @@
|
|||||||
|
# Checklist de mise en production — NixOS Workstations
|
||||||
|
|
||||||
|
## Avant activation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/nixos-workstations
|
||||||
|
|
||||||
|
sudo nixos-rebuild build \
|
||||||
|
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||||
|
|
||||||
|
sudo nixos-rebuild dry-activate \
|
||||||
|
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
## Test contrôlé
|
||||||
|
|
||||||
|
1. Vérifier que `localadm` se connecte toujours par mot de passe.
|
||||||
|
2. Vérifier que `/etc/nixos/hardware-configuration.nix` est bien le fichier local du poste.
|
||||||
|
3. Exécuter :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild test \
|
||||||
|
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Fermer la session `localadm` et ouvrir la session `alice`.
|
||||||
|
5. Vérifier que l'assistant plein écran démarre automatiquement.
|
||||||
|
6. Tester avec le mot de passe temporaire du lab `LaboTest@1980` et le PIN temporaire réel de la YubiKey.
|
||||||
|
7. Vérifier qu'un mauvais PIN produit une erreur et **ne déclenche aucune tentative automatique supplémentaire**.
|
||||||
|
8. Vérifier qu'après succès les deux fichiers existent :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ls -l ~/.local/state/nixos-workstations/
|
||||||
|
```
|
||||||
|
|
||||||
|
Attendu :
|
||||||
|
|
||||||
|
```text
|
||||||
|
password-initialized
|
||||||
|
yubikey-pin-initialized
|
||||||
|
```
|
||||||
|
|
||||||
|
9. Se déconnecter/reconnecter : l'assistant ne doit plus démarrer.
|
||||||
|
10. Tester l'authentification YubiKey + nouveau PIN, puis le mot de passe local de secours.
|
||||||
|
|
||||||
|
## Passage persistant
|
||||||
|
|
||||||
|
Uniquement après validation complète :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo nixos-rebuild switch \
|
||||||
|
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
## Important
|
||||||
|
|
||||||
|
- Ne jamais supprimer/réinitialiser la YubiKey en cas d'erreur de PIN.
|
||||||
|
- Ne jamais modifier manuellement `/etc/shadow`.
|
||||||
|
- Le retour à une ancienne génération NixOS ne restaure pas les mots de passe mutables.
|
||||||
@@ -2,51 +2,51 @@
|
|||||||
|
|
||||||
# 🛡️ NixOS Workstations
|
# 🛡️ NixOS Workstations
|
||||||
|
|
||||||
### Déploiement industrialisé d'environnements de bureau NixOS sécurisés
|
### Déploiement industrialisé de postes de travail NixOS sécurisés
|
||||||
|
|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||

|

|
||||||
|
|
||||||
**Une base NixOS reproductible pour construire, sécuriser et maintenir un parc de postes de travail homogènes.**
|
**Une base déclarative et reproductible pour déployer, sécuriser et maintenir des environnements de bureau NixOS homogènes.**
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🎯 Objectif du projet
|
## 🎯 Objectif
|
||||||
|
|
||||||
**NixOS Workstations** a pour objectif d'industrialiser le déploiement de postes de travail NixOS en séparant clairement :
|
**NixOS Workstations** fournit un socle commun permettant de construire un parc de postes de travail NixOS avec :
|
||||||
|
|
||||||
- 🧩 la **configuration commune du parc** ;
|
- 🧬 une configuration déclarative versionnée dans Git ;
|
||||||
- 💻 la **détection matérielle propre à chaque poste** ;
|
- 📦 un ensemble logiciel homogène ;
|
||||||
- 📦 les **logiciels et paramètres du bureau** ;
|
- 🖥️ KDE Plasma 6 ;
|
||||||
- 👤 les **comptes utilisateurs** ;
|
- 👤 des comptes locaux maîtrisés ;
|
||||||
- 🔐 les **mécanismes d'authentification** ;
|
- 🔐 une authentification locale de secours ;
|
||||||
- 🔑 l'utilisation de **clés FIDO2 / YubiKey** ;
|
- 🔑 FIDO2 / YubiKey ;
|
||||||
- ✨ l'expérience de **finalisation du poste à la première connexion**.
|
- ✨ une finalisation graphique du poste lors de la première utilisation ;
|
||||||
|
- 💻 une séparation stricte entre configuration commune et matériel propre à chaque machine.
|
||||||
L'idée est qu'un poste puisse être réinstallé puis reconstruit à partir du dépôt Git avec un minimum d'opérations manuelles.
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
┌─────────────────────────────┐
|
┌───────────────────────────┐
|
||||||
│ Dépôt Git │
|
│ Git │
|
||||||
│ nixos-workstations │
|
│ nixos-workstations │
|
||||||
└──────────────┬──────────────┘
|
└─────────────┬─────────────┘
|
||||||
│
|
│
|
||||||
┌───────────────┼────────────────┐
|
┌────────────────┼────────────────┐
|
||||||
│ │ │
|
│ │ │
|
||||||
▼ ▼ ▼
|
▼ ▼ ▼
|
||||||
📦 Logiciels 🔐 Sécurité 🖥️ Bureau KDE
|
📦 Logiciels 👤 Utilisateurs 🛡️ Sécurité
|
||||||
│ │ │
|
│ │ │
|
||||||
└───────────────┼────────────────┘
|
└────────────────┼────────────────┘
|
||||||
│
|
│
|
||||||
▼
|
▼
|
||||||
💻 Poste NixOS
|
🖥️ NixOS + KDE Plasma
|
||||||
│
|
│
|
||||||
|
🔐 Mot de passe
|
||||||
🔑 FIDO2 / YubiKey
|
🔑 FIDO2 / YubiKey
|
||||||
│
|
│
|
||||||
▼
|
▼
|
||||||
@@ -59,51 +59,52 @@ L'idée est qu'un poste puisse être réinstallé puis reconstruit à partir du
|
|||||||
|
|
||||||
| | Principe | Objectif |
|
| | Principe | Objectif |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| 🧬 | **Configuration déclarative** | Décrire l'état attendu du poste dans Git |
|
| 🧬 | **Déclaratif** | Décrire l'état attendu du poste dans Git |
|
||||||
| ♻️ | **Reproductibilité** | Pouvoir reconstruire un poste de manière cohérente |
|
| ♻️ | **Reproductible** | Reconstruire un poste de manière cohérente |
|
||||||
| 🧱 | **Modularité** | Séparer logiciels, utilisateurs, sécurité et UX |
|
| 🧱 | **Modulaire** | Séparer logiciels, utilisateurs, sécurité et UX |
|
||||||
| 🔐 | **Sécurité native** | S'appuyer sur les mécanismes NixOS plutôt que les contourner |
|
| 🔐 | **Natif NixOS** | Utiliser les mécanismes système plutôt que les contourner |
|
||||||
| 🔑 | **FIDO2 / YubiKey** | Fournir une authentification moderne aux utilisateurs |
|
| 🔑 | **FIDO2** | Utiliser une clé de sécurité comme moyen d'authentification principal |
|
||||||
| 🖥️ | **Expérience utilisateur** | Fournir un bureau KDE Plasma cohérent et simple |
|
| 🧰 | **Industrialisable** | Éviter les fichiers de configuration complets spécifiques à chaque poste |
|
||||||
| 🧪 | **Validation progressive** | `build` → `dry-activate` → `test` → `switch` |
|
| 🧪 | **Validation progressive** | `build` → `dry-activate` → `test` → `switch` |
|
||||||
| 🧰 | **Industrialisation** | Limiter les opérations spécifiques à chaque poste |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🏗️ Architecture du dépôt
|
## 🏗️ Architecture
|
||||||
|
|
||||||
```text
|
```text
|
||||||
nixos-workstations/
|
nixos-workstations/
|
||||||
├── configuration.nix
|
├── configuration.nix
|
||||||
|
├── u2f-mappings
|
||||||
├── LICENSE
|
├── LICENSE
|
||||||
├── COMMERCIAL-LICENSE.md
|
├── COMMERCIAL-LICENSE.md
|
||||||
├── u2f-mappings
|
├── PRODUCTION-CHECKLIST.md
|
||||||
│
|
│
|
||||||
├── first-login-ui/
|
├── workstation-setup/
|
||||||
│ ├── CMakeLists.txt
|
│ ├── CMakeLists.txt
|
||||||
│ ├── org.raspot.nixosfirstlogin.desktop
|
│ ├── org.raspot.nixosworkstations.setup.desktop
|
||||||
│ └── src/
|
│ └── src/
|
||||||
│ ├── CMakeLists.txt
|
│ ├── CMakeLists.txt
|
||||||
│ ├── main.cpp
|
│ ├── main.cpp
|
||||||
│ └── Main.qml
|
│ ├── Main.qml
|
||||||
|
│ ├── ProvisioningBackend.h
|
||||||
|
│ └── ProvisioningBackend.cpp
|
||||||
│
|
│
|
||||||
└── modules/
|
└── modules/
|
||||||
├── software.nix
|
├── software.nix
|
||||||
├── users.nix
|
├── users.nix
|
||||||
├── security.nix
|
├── security.nix
|
||||||
├── yubikey-first-login.nix
|
└── workstation-setup.nix
|
||||||
└── first-login-ui.nix
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 💻 Matériel propre à chaque machine
|
### 💻 Matériel propre à chaque poste
|
||||||
|
|
||||||
Le fichier matériel généré par NixOS **n'est pas stocké dans le dépôt commun** :
|
Le fichier généré lors de l'installation reste **local à la machine** :
|
||||||
|
|
||||||
```text
|
```text
|
||||||
/etc/nixos/hardware-configuration.nix
|
/etc/nixos/hardware-configuration.nix
|
||||||
```
|
```
|
||||||
|
|
||||||
La configuration du parc l'importe directement :
|
Il n'est pas partagé dans le dépôt commun.
|
||||||
|
|
||||||
```nix
|
```nix
|
||||||
imports = [
|
imports = [
|
||||||
@@ -111,64 +112,56 @@ imports = [
|
|||||||
./modules/software.nix
|
./modules/software.nix
|
||||||
./modules/users.nix
|
./modules/users.nix
|
||||||
./modules/security.nix
|
./modules/security.nix
|
||||||
./modules/yubikey-first-login.nix
|
./modules/workstation-setup.nix
|
||||||
./modules/first-login-ui.nix
|
|
||||||
];
|
];
|
||||||
```
|
```
|
||||||
|
|
||||||
Ainsi, les UUID, partitions et périphériques propres à une installation restent locaux tandis que les règles communes restent centralisées dans Git.
|
Les UUID de partitions et autres informations propres au matériel ne peuvent ainsi pas écraser la configuration d'un autre poste.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🧩 Modules principaux
|
## 🧩 Modules
|
||||||
|
|
||||||
### 📦 `software.nix`
|
### 📦 `software.nix`
|
||||||
|
|
||||||
Décrit l'environnement logiciel commun :
|
Déploie l'environnement logiciel commun : Chromium, Firefox ESR, OnlyOffice, Teams, Outlook Web, Git et les outils FIDO2 nécessaires.
|
||||||
|
|
||||||
- 🌐 Chromium ;
|
|
||||||
- 🦊 Firefox ESR ;
|
|
||||||
- 📄 OnlyOffice ;
|
|
||||||
- 💬 Teams ;
|
|
||||||
- ✉️ Outlook Web ;
|
|
||||||
- 🔧 Git et outils nécessaires au poste.
|
|
||||||
|
|
||||||
### 👤 `users.nix`
|
### 👤 `users.nix`
|
||||||
|
|
||||||
Décrit les comptes locaux attendus et leurs rôles :
|
Décrit les comptes locaux et leurs rôles. Les mots de passe restent mutables afin que l'utilisateur puisse personnaliser son secret local avec `passwd`.
|
||||||
|
|
||||||
- 🛠️ compte d'administration locale ;
|
Dans ce **lab**, le mot de passe temporaire d'`alice` est volontairement déclaré dans `users.nix` avec `initialHashedPassword`.
|
||||||
- 👩💻 comptes utilisateurs standards ;
|
|
||||||
- 👥 appartenance aux groupes nécessaires ;
|
```text
|
||||||
- 🔐 mécanismes d'initialisation des secrets lorsque nécessaire.
|
Mot de passe temporaire du lab : LaboTest@1980
|
||||||
|
```
|
||||||
|
|
||||||
|
Avec `users.mutableUsers = true`, ce hash sert à la création initiale du compte. Une fois le mot de passe changé par l'utilisateur, les activations suivantes conservent le nouveau mot de passe local.
|
||||||
|
|
||||||
|
> Pour un déploiement réel, le dépôt sera privé et la stratégie de secret initial pourra être adaptée au processus d'exploitation.
|
||||||
|
|
||||||
### 🛡️ `security.nix`
|
### 🛡️ `security.nix`
|
||||||
|
|
||||||
Centralise les paramètres d'authentification et les mappings FIDO2/U2F.
|
Déploie le mapping utilisateur ↔ YubiKey et configure l'authentification PAM U2F/FIDO2 utilisée par le poste.
|
||||||
|
|
||||||
```text
|
### ✨ `workstation-setup.nix`
|
||||||
Utilisateur
|
|
||||||
│
|
Déploie l'assistant plein écran de finalisation du poste et son lancement automatique pour l'utilisateur concerné.
|
||||||
├──── 🔐 mot de passe
|
|
||||||
│
|
Le nom de l'utilisateur n'est pas codé dans l'application : il est déclaré dans la configuration NixOS :
|
||||||
└──── 🔑 YubiKey / FIDO2
|
|
||||||
|
```nix
|
||||||
|
nixosWorkstations.workstationSetup = {
|
||||||
|
enable = true;
|
||||||
|
user = "alice";
|
||||||
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
### 🔑 `yubikey-first-login.nix`
|
|
||||||
|
|
||||||
Gère le workflow de personnalisation initiale des secrets liés au poste et à la YubiKey.
|
|
||||||
|
|
||||||
### ✨ `first-login-ui.nix`
|
|
||||||
|
|
||||||
Installe l'interface graphique plein écran utilisée lors de la finalisation du poste.
|
|
||||||
|
|
||||||
L'assistant graphique est **une composante du projet**, pas sa finalité.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## ✨ Finalisation du poste utilisateur
|
## ✨ Finalisation du poste
|
||||||
|
|
||||||
Lors de la première utilisation, l'utilisateur dispose d'un assistant graphique intégré au bureau KDE.
|
Lors de la première ouverture de session de l'utilisateur :
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
@@ -176,197 +169,168 @@ Lors de la première utilisation, l'utilisateur dispose d'un assistant graphique
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
L'objectif est de rendre les opérations de personnalisation simples et compréhensibles, sans exposer l'utilisateur aux outils système.
|
### 🔐 Mot de passe local
|
||||||
|
|
||||||
### 🔐 Mot de passe
|
- 👁️ affichage/masquage des champs ;
|
||||||
|
- 📊 indicateur de robustesse purement informatif ;
|
||||||
|
- ✅ mot de passe actuel obligatoire ;
|
||||||
|
- ✅ confirmation du nouveau mot de passe ;
|
||||||
|
- 🟢 aucun blocage UI lié à une robustesse jugée faible ;
|
||||||
|
- 🔒 changement réel effectué par `/run/wrappers/bin/passwd`.
|
||||||
|
|
||||||
- 🔒 saisie masquée par défaut ;
|
### 🔑 PIN YubiKey
|
||||||
- 👁️ bouton pour afficher ou masquer les secrets ;
|
|
||||||
- 📊 indicateur de robustesse ;
|
|
||||||
- 💡 recommandations informatives ;
|
|
||||||
- ✅ confirmation obligatoire ;
|
|
||||||
- 🟢 un mot de passe faible n'est pas bloqué volontairement.
|
|
||||||
|
|
||||||
### 🔑 YubiKey
|
|
||||||
|
|
||||||
- 🔢 saisie du PIN temporaire ;
|
|
||||||
- 👁️ affichage/masquage du PIN ;
|
- 👁️ affichage/masquage du PIN ;
|
||||||
- 🔁 choix et confirmation du nouveau PIN ;
|
- ✅ PIN temporaire obligatoire ;
|
||||||
- ✅ validation avant la fin du parcours.
|
- ✅ choix et confirmation du nouveau PIN ;
|
||||||
|
- 🔐 changement réel effectué par `ykman fido access change-pin` ;
|
||||||
|
- ⚠️ aucune boucle automatique en cas de mauvais PIN.
|
||||||
|
|
||||||
### ✅ Poste prêt
|
### 🚪 Assistant obligatoire
|
||||||
|
|
||||||
L'écran final récapitule visuellement les opérations réalisées avant de rendre le poste à l'utilisateur.
|
Tant que les deux opérations n'ont pas **réellement réussi** :
|
||||||
|
|
||||||
|
- le bouton final n'est pas disponible ;
|
||||||
|
- une fermeture classique de la fenêtre est refusée ;
|
||||||
|
- une minimisation est immédiatement ramenée en plein écran ;
|
||||||
|
- l'assistant sera reproposé à la prochaine ouverture de session si la configuration reste incomplète.
|
||||||
|
|
||||||
|
Les étapes ne sont considérées terminées qu'après création des marqueurs :
|
||||||
|
|
||||||
|
```text
|
||||||
|
~/.local/state/nixos-workstations/password-initialized
|
||||||
|
~/.local/state/nixos-workstations/yubikey-pin-initialized
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🛡️ Sécurité
|
## 🛡️ Traitement des secrets
|
||||||
|
|
||||||
<div align="center">
|
|
||||||
|
|
||||||
### 🔐 L'interface graphique ne doit pas réimplémenter les mécanismes de sécurité du système.
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
L'architecture sépare l'interface des opérations sensibles :
|
|
||||||
|
|
||||||
```text
|
```text
|
||||||
┌────────────────────────────────┐
|
┌───────────────────────────────┐
|
||||||
│ Qt Quick / QML │
|
│ Qt Quick / QML │
|
||||||
│ Présentation et validation │
|
│ saisie utilisateur │
|
||||||
└───────────────┬────────────────┘
|
└───────────────┬───────────────┘
|
||||||
│
|
│ pipe privé
|
||||||
▼
|
▼
|
||||||
┌────────────────────────────────┐
|
┌───────────────────────────────┐
|
||||||
│ Backend contrôlé │
|
│ backend Qt contrôlé │
|
||||||
├────────────────────────────────┤
|
└───────────────┬───────────────┘
|
||||||
│ 🔐 Mot de passe → passwd NixOS │
|
│
|
||||||
│ 🔑 PIN YubiKey → ykman │
|
┌────────┴────────┐
|
||||||
└────────────────────────────────┘
|
▼ ▼
|
||||||
|
/run/wrappers/bin/ ykman FIDO2
|
||||||
|
passwd
|
||||||
|
│ │
|
||||||
|
▼ ▼
|
||||||
|
/etc/shadow YubiKey
|
||||||
```
|
```
|
||||||
|
|
||||||
Principes retenus :
|
Principes retenus :
|
||||||
|
|
||||||
- 🚫 pas de modification directe de `/etc/shadow` ;
|
- 🚫 aucun mot de passe ou PIN dans les arguments de processus ;
|
||||||
- 🚫 pas de réimplémentation artisanale de PAM ;
|
- 🚫 aucun **secret définitif utilisateur** écrit dans Git ;
|
||||||
- ✅ utilisation des mécanismes NixOS prévus pour les mots de passe ;
|
- 🧪 le mot de passe temporaire du lab est volontairement versionné dans `users.nix` ;
|
||||||
- ✅ utilisation des outils FIDO2/YubiKey dédiés ;
|
- 🚫 aucune modification directe de `/etc/shadow` ;
|
||||||
- ✅ séparation entre compte administrateur et utilisateur standard ;
|
- 🚫 aucun module PAM artisanal ;
|
||||||
- ✅ validation des changements avant activation persistante.
|
- 🚫 aucun reset automatique de YubiKey ;
|
||||||
|
- ✅ wrapper `passwd` fourni par NixOS ;
|
||||||
|
- ✅ outil Yubico officiel pour FIDO2 ;
|
||||||
|
- ✅ logs des helpers désactivés ;
|
||||||
|
- ✅ core dumps désactivés pendant le provisioning ;
|
||||||
|
- ✅ une seule tentative FIDO2 par validation utilisateur.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🧪 Cycle de validation
|
## 🔐 Mot de passe temporaire du lab
|
||||||
|
|
||||||
Une modification du dépôt n'est pas directement appliquée avec `switch`.
|
Le compte `alice` est créé avec un mot de passe temporaire connu pour faciliter les essais reproductibles :
|
||||||
|
|
||||||
### 1️⃣ Construction
|
```text
|
||||||
|
LaboTest@1980
|
||||||
|
```
|
||||||
|
|
||||||
|
Son hash est déclaré directement dans :
|
||||||
|
|
||||||
|
```text
|
||||||
|
modules/users.nix
|
||||||
|
```
|
||||||
|
|
||||||
|
L'assistant demande ensuite à l'utilisateur de remplacer ce mot de passe temporaire par son mot de passe personnel. Avec `users.mutableUsers = true`, le nouveau mot de passe est conservé lors des activations suivantes.
|
||||||
|
|
||||||
|
> Cette décision est volontaire pour le **lab**. Elle évite une étape locale supplémentaire avant chaque nouvelle installation de test.
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧪 Déploiement
|
||||||
|
|
||||||
|
### 1. Construction
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo nixos-rebuild build \
|
sudo nixos-rebuild build \
|
||||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||||
```
|
```
|
||||||
|
|
||||||
> 🧱 Construit la nouvelle configuration sans l'activer.
|
### 2. Simulation d'activation
|
||||||
|
|
||||||
### 2️⃣ Prévisualisation de l'activation
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo nixos-rebuild dry-activate \
|
sudo nixos-rebuild dry-activate \
|
||||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||||
```
|
```
|
||||||
|
|
||||||
> 🔎 Permet d'inspecter les changements d'activation prévus.
|
### 3. Test temporaire
|
||||||
|
|
||||||
### 3️⃣ Test temporaire
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo nixos-rebuild test \
|
sudo nixos-rebuild test \
|
||||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||||
```
|
```
|
||||||
|
|
||||||
> 🧪 Active la configuration pour validation sans en faire la génération de démarrage par défaut.
|
### 4. Activation persistante
|
||||||
|
|
||||||
### 4️⃣ Validation définitive
|
Après validation complète de la checklist :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo nixos-rebuild switch \
|
sudo nixos-rebuild switch \
|
||||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||||
```
|
```
|
||||||
|
|
||||||
> ✅ Rend la configuration active et persistante pour les prochains démarrages.
|
👉 Voir [`PRODUCTION-CHECKLIST.md`](PRODUCTION-CHECKLIST.md) avant un `switch`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🚀 Vision de déploiement
|
## 🔭 Industrialisation future
|
||||||
|
|
||||||
L'objectif est de réduire progressivement la préparation d'un poste à une chaîne standardisée :
|
Le socle est conçu pour évoluer vers :
|
||||||
|
|
||||||
```text
|
```text
|
||||||
💿 Installation NixOS
|
Inventaire / GLPI / CSV
|
||||||
│
|
│
|
||||||
▼
|
▼
|
||||||
🧬 Génération du matériel local
|
Utilisateur + poste + profil matériel
|
||||||
│
|
│
|
||||||
▼
|
▼
|
||||||
📥 Récupération du dépôt Git
|
Configuration NixOS commune
|
||||||
│
|
│
|
||||||
▼
|
▼
|
||||||
🧱 Construction de la configuration
|
Installation automatisée
|
||||||
│
|
│
|
||||||
▼
|
▼
|
||||||
🛡️ Application du socle de sécurité
|
Finalisation utilisateur FIDO2
|
||||||
│
|
|
||||||
▼
|
|
||||||
👤 Affectation de l'utilisateur
|
|
||||||
│
|
|
||||||
▼
|
|
||||||
🔑 Préparation FIDO2 / YubiKey
|
|
||||||
│
|
|
||||||
▼
|
|
||||||
✨ Finalisation graphique
|
|
||||||
│
|
|
||||||
▼
|
|
||||||
✅ Poste prêt
|
|
||||||
```
|
```
|
||||||
|
|
||||||
À terme, cette chaîne doit pouvoir être complétée par :
|
Les prochaines briques possibles sont notamment Disko, un inventaire machines/utilisateurs et une installation unattended.
|
||||||
|
|
||||||
- 🧰 installation automatisée ;
|
|
||||||
- 🗂️ inventaire des machines ;
|
|
||||||
- 🧩 profils matériels ;
|
|
||||||
- 👥 affectation déclarative utilisateurs/postes ;
|
|
||||||
- 🔄 mises à jour centralisées par Git ;
|
|
||||||
- 📋 intégration avec les outils de gestion de parc.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🧰 Technologies
|
## ⚖️ Licence
|
||||||
|
|
||||||
<p align="center">
|
Le projet est distribué sous **PolyForm Noncommercial 1.0.0**.
|
||||||
|
|
||||||

|
✅ utilisation et modification non commerciales selon les conditions de la licence ;
|
||||||

|
🚫 exploitation commerciale sans autorisation ;
|
||||||

|
💼 une exploitation commerciale peut faire l'objet d'un accord séparé avec le titulaire des droits.
|
||||||

|
|
||||||

|
|
||||||

|
|
||||||
|
|
||||||
</p>
|
Voir [`LICENSE`](LICENSE) et [`COMMERCIAL-LICENSE.md`](COMMERCIAL-LICENSE.md).
|
||||||
|
|
||||||
---
|
> Cette licence est *source-available non commerciale* ; elle n'est pas une licence Open Source au sens OSI.
|
||||||
|
|
||||||
## 📜 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 :
|
|
||||||
|
|
||||||
- [`LICENSE`](./LICENSE)
|
|
||||||
- [`COMMERCIAL-LICENSE.md`](./COMMERCIAL-LICENSE.md)
|
|
||||||
|
|
||||||
> ℹ️ PolyForm Noncommercial est une licence **source-available non commerciale** et non une licence open source au sens OSI.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<div align="center">
|
|
||||||
|
|
||||||
### 🛡️ NixOS Workstations
|
|
||||||
|
|
||||||
**Déployer des postes homogènes, reproductibles et sécurisés sans transformer chaque machine en projet individuel.**
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|||||||
Reference in New Issue
Block a user