Unifie le compte generique flotte : usagers -> nixos (compte, attribut, dossier)

Renomme partout (flake.nix, hosts/usagers -> hosts/nixos,
install.sh, autoUpgrade.flake, home-manager.users, README) pour
que compte systeme, attribut de flake et mot de passe portent tous
le meme nom "nixos" -- un seul mot a retenir sur un poste partage.

Remplace aussi hosts/nixos/dconf.ini (jusque-la un seul reglage,
le fond d'ecran) par le dconf complet d'oreo (panneau, themes,
reglages GTK/Nemo...), chemins de wallpaper adaptes vers
hosts/common/wallpaper (partage, pas par-profil). Warpinator
connect-id retire du dconf copie : deja exclu du bureau Cinnamon
sur les trois profils (fleet/thomas-clara-jade/oreo) via
environment.cinnamon.excludePackages, une valeur figee partagee
par tout le parc aurait de toute facon casse l'appairage si le
paquet avait ete present.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-12 14:23:18 +02:00
co-authored by Claude Sonnet 5
parent 8f99c20ec5
commit 2efdcaeecb
8 changed files with 246 additions and 46 deletions
+15 -15
View File
@@ -1,6 +1,6 @@
# Nixos_Fleet # Nixos_Fleet
Déploiement en masse (PXE ou USB) du profil générique `usagers`. Déploiement en masse (PXE ou USB) du profil générique `nixos`.
Repo public. `git pull` sans mot de passe. Repo public. `git pull` sans mot de passe.
@@ -122,11 +122,11 @@ N'y touche pas.
PC normal : PC normal :
Utilisateur : `usagers` Utilisateur : `nixos`
Mot de passe : `nixos` Mot de passe : `nixos`
Mot de passe stable, ne change jamais tout seul et n'est jamais redemandé (poste partagé, pas nominatif -- voir "Réactiver un changement de mot de passe forcé" en référence si ça doit changer un jour). Utilisateur et mot de passe identiques, volontairement (un seul mot à retenir sur un poste partagé). Stable, ne change jamais tout seul et n'est jamais redemandé (voir "Réactiver un changement de mot de passe forcé" en référence si ça doit changer un jour).
PC pour une personne : PC pour une personne :
@@ -313,7 +313,7 @@ IP qui changent tout le temps → un autre DHCP tourne déjà, repasser `standal
## Contenu du repo ## Contenu du repo
`hosts/usagers/` → le seul profil du repo. Jamais chiffré. `hosts/nixos/` → le seul profil du repo. Jamais chiffré.
`diskos/plain.nix` → layout disko (disque `main`, GPT+ESP+btrfs). `diskos/plain.nix` → layout disko (disque `main`, GPT+ESP+btrfs).
@@ -323,7 +323,7 @@ IP qui changent tout le temps → un autre DHCP tourne déjà, repasser `standal
## Personnaliser le bureau (dconf) ## Personnaliser le bureau (dconf)
`hosts/usagers/dconf.ini` contient les réglages Cinnamon (thème, fond d'écran, panneau...), chargés par home-manager à chaque rebuild. `hosts/nixos/dconf.ini` contient les réglages Cinnamon (thème, fond d'écran, panneau...), chargés par home-manager à chaque rebuild.
Pour changer un réglage : le faire en direct dans l'interface Cinnamon sur une machine, puis exporter : Pour changer un réglage : le faire en direct dans l'interface Cinnamon sur une machine, puis exporter :
@@ -331,11 +331,11 @@ Pour changer un réglage : le faire en direct dans l'interface Cinnamon sur une
dconf dump /org/cinnamon/ > dconf.ini dconf dump /org/cinnamon/ > dconf.ini
``` ```
Remplacer `hosts/usagers/dconf.ini` par ce fichier, commit, push. Rien à changer dans le `.nix`. Remplacer `hosts/nixos/dconf.ini` par ce fichier, commit, push. Rien à changer dans le `.nix`.
## Réactiver un changement de mot de passe forcé ## Réactiver un changement de mot de passe forcé
Par défaut, `usagers` garde `nixos` comme mot de passe stable, sans expiration (`hosts/usagers/configuration.nix`). Voulu : poste partagé, pas nominatif -- forcer un changement casserait le mot de passe commun affiché sur l'étiquette/le guide remis aux gens. Par défaut, le compte `nixos` garde `nixos` comme mot de passe stable, sans expiration (`hosts/nixos/configuration.nix`). Voulu : poste partagé, pas nominatif -- forcer un changement casserait le mot de passe commun affiché sur l'étiquette/le guide remis aux gens.
`nixos_users` force ce changement au premier login pour les postes nominatifs, via un script d'activation one-shot (`hosts/common/accounts.nix` de ce repo-là) : `nixos_users` force ce changement au premier login pour les postes nominatifs, via un script d'activation one-shot (`hosts/common/accounts.nix` de ce repo-là) :
@@ -343,14 +343,14 @@ Par défaut, `usagers` garde `nixos` comme mot de passe stable, sans expiration
system.activationScripts.forcePasswordChangeOnce.text = '' system.activationScripts.forcePasswordChangeOnce.text = ''
marker=/var/lib/nixos-force-pwchange-done marker=/var/lib/nixos-force-pwchange-done
if [ ! -e "$marker" ]; then if [ ! -e "$marker" ]; then
${pkgs.shadow}/bin/chage -d 0 usagers ${pkgs.shadow}/bin/chage -d 0 nixos
mkdir -p /var/lib mkdir -p /var/lib
touch "$marker" touch "$marker"
fi fi
''; '';
``` ```
Pour réactiver la même chose sur `usagers`, reprendre ce bloc tel quel dans `hosts/usagers/configuration.nix` (ou `hosts/common/default.nix` si ça doit s'appliquer à un futur deuxième profil de flotte). Le marqueur est nécessaire : sans lui, `chage -d 0` s'appliquerait à nouveau à chaque `nixos-rebuild switch`, redemandant un mot de passe à chaque redémarrage. Pour réactiver la même chose sur `nixos`, reprendre ce bloc tel quel dans `hosts/nixos/configuration.nix` (ou `hosts/common/default.nix` si ça doit s'appliquer à un futur deuxième profil de flotte). Le marqueur est nécessaire : sans lui, `chage -d 0` s'appliquerait à nouveau à chaque `nixos-rebuild switch`, redemandant un mot de passe à chaque redémarrage.
## Pourquoi deux repos ## Pourquoi deux repos
@@ -417,7 +417,7 @@ sudo systemctl start nixos-upgrade.service
```bash ```bash
cd /etc/nixos cd /etc/nixos
sudo git pull sudo git pull
sudo nixos-rebuild switch --flake .#usagers sudo nixos-rebuild switch --flake .#nixos
``` ```
Le `git pull` est obligatoire ici : contrairement à `nixos-upgrade.service`, ce rebuild lit les fichiers locaux de `/etc/nixos`, pas l'URL distante. Le `git pull` est obligatoire ici : contrairement à `nixos-upgrade.service`, ce rebuild lit les fichiers locaux de `/etc/nixos`, pas l'URL distante.
@@ -436,16 +436,16 @@ Boot BIOS et boot UEFI, sur le parc réel.
Test sur 1-2 PC réels d'abord. Test sur 1-2 PC réels d'abord.
PC à seulement 4 Go de RAM : le zram (`installer-base.nix`) doit suffire pour installer `usagers` (Cinnamon + Firefox + LibreOffice + VLC), mais pas testé en dessous de 12 Go pour l'instant. Si ça échoue encore sur du 4 Go réel : alléger la liste de paquets de `usagers` plutôt que d'insister sur le zram seul. PC à seulement 4 Go de RAM : le zram (`installer-base.nix`) doit suffire pour installer `nixos` (Cinnamon + Firefox + LibreOffice + VLC), mais pas testé en dessous de 12 Go pour l'instant. Si ça échoue encore sur du 4 Go réel : alléger la liste de paquets de `nixos` plutôt que d'insister sur le zram seul.
```bash ```bash
nix flake check --no-build # évalue usagers/installer-netboot/installer-iso nix flake check --no-build # évalue nixos/installer-netboot/installer-iso
nix flake check --no-build --impure # inclut pxe-server (lit /etc/nixos, réel sur le serveur seulement) nix flake check --no-build --impure # inclut pxe-server (lit /etc/nixos, réel sur le serveur seulement)
nix build .#nixosConfigurations.usagers.config.system.build.toplevel --dry-run nix build .#nixosConfigurations.nixos.config.system.build.toplevel --dry-run
nix build .#nixosConfigurations.installer-iso.config.system.build.isoImage --dry-run nix build .#nixosConfigurations.installer-iso.config.system.build.isoImage --dry-run
``` ```
Vérifié (WSL, testé le 2026-09-12) : `usagers` s'évalue et résout entièrement sa fermeture de paquets sans erreur. `pxe-server` échoue sans `--impure` en dehors du vrai serveur PXE (attendu, lit `/etc/nixos/hardware-configuration.nix`). Vérifié (WSL, testé le 2026-09-12) : `nixos` s'évalue et résout entièrement sa fermeture de paquets sans erreur. `pxe-server` échoue sans `--impure` en dehors du vrai serveur PXE (attendu, lit `/etc/nixos/hardware-configuration.nix`).
**Ce que ces commandes ne couvrent pas** : elles vérifient que la config s'évalue et que les paquets existent, pas que le poste installé fonctionne réellement (Wi-Fi, wallpaper, LightDM, avatar...). Seul un test sur machine réelle (étape 8 plus haut) le confirme. **Ce que ces commandes ne couvrent pas** : elles vérifient que la config s'évalue et que les paquets existent, pas que le poste installé fonctionne réellement (Wi-Fi, wallpaper, LightDM, avatar...). Seul un test sur machine réelle (étape 8 plus haut) le confirme.
@@ -494,7 +494,7 @@ Aucun paquet à installer manuellement : `enable = true` suffit dans les deux ca
Après édition : Après édition :
```bash ```bash
sudo nixos-rebuild switch --flake .#usagers sudo nixos-rebuild switch --flake .#nixos
``` ```
--- ---
+2 -2
View File
@@ -21,12 +21,12 @@
{ self, nixpkgs, disko, home-manager, ... }: { self, nixpkgs, disko, home-manager, ... }:
{ {
nixosConfigurations = { nixosConfigurations = {
usagers = nixpkgs.lib.nixosSystem { nixos = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
disko.nixosModules.disko disko.nixosModules.disko
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
./hosts/usagers/configuration.nix ./hosts/nixos/configuration.nix
]; ];
}; };
+9 -7
View File
@@ -172,7 +172,7 @@ in
enable = true; enable = true;
persistent = true; persistent = true;
dates = "weekly"; dates = "weekly";
flake = "git+https://gitea.miniclic.net/Damien/Nixos_Fleet.git#usagers"; flake = "git+https://gitea.miniclic.net/Damien/Nixos_Fleet.git#nixos";
}; };
# Compte admin de la flotte : root, mot de passe "nixos" STABLE (pas # Compte admin de la flotte : root, mot de passe "nixos" STABLE (pas
@@ -200,15 +200,17 @@ in
]; ];
# dconf par utilisateur via home-manager, chargé depuis un fichier ini # dconf par utilisateur via home-manager, chargé depuis un fichier ini
# brut (hosts/usagers/dconf.ini) plutôt que du dconf.settings typé -- # brut (hosts/nixos/dconf.ini) plutôt que du dconf.settings typé --
# même mécanisme que oreo (nixos_users), pour la même raison : ça se # même mécanisme que oreo (nixos_users), pour la même raison : ça se
# met à jour par un simple `dconf dump /org/cinnamon/ > dconf.ini` + # met à jour par un simple `dconf dump /org/cinnamon/ > dconf.ini` +
# commit depuis une machine réelle, pas en retranscrivant chaque clé à # commit depuis une machine réelle, pas en retranscrivant chaque clé à
# la main en Nix. Seed minimal ici (juste le fond d'écran par défaut), # la main en Nix. Repris tel quel du dconf d'oreo (panneau, thèmes,
# à enrichir plus tard de la même façon. # réglages GTK/Nemo...), sauf le chemin du fond d'écran (commun,
# pas par-profil) et l'ID Warpinator (retiré : une valeur fixe
# partagée par tout le parc casserait l'appairage).
home-manager.useGlobalPkgs = true; # partage le pkgs du système, pas de deuxième évaluation (RAM) home-manager.useGlobalPkgs = true; # partage le pkgs du système, pas de deuxième évaluation (RAM)
home-manager.backupFileExtension = "hm-backup"; # évite un échec si un fichier existe déjà (migration) home-manager.backupFileExtension = "hm-backup"; # évite un échec si un fichier existe déjà (migration)
home-manager.users.usagers = home-manager.users.nixos =
{ pkgs, lib, ... }: { pkgs, lib, ... }:
{ {
home.stateVersion = "26.05"; home.stateVersion = "26.05";
@@ -217,13 +219,13 @@ in
# module home-manager dconf.nix officiel (dconf a besoin d'un bus # module home-manager dconf.nix officiel (dconf a besoin d'un bus
# D-Bus pour écrire, on en lance un temporaire s'il n'y en a pas # D-Bus pour écrire, on en lance un temporaire s'il n'y en a pas
# déjà un actif). # déjà un actif).
home.activation.usagersDconf = lib.hm.dag.entryAfter [ "writeBoundary" ] '' home.activation.nixosDconf = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
if [[ -v DBUS_SESSION_BUS_ADDRESS ]]; then if [[ -v DBUS_SESSION_BUS_ADDRESS ]]; then
DCONF_DBUS_RUN_SESSION="" DCONF_DBUS_RUN_SESSION=""
else else
DCONF_DBUS_RUN_SESSION="${pkgs.dbus}/bin/dbus-run-session --dbus-daemon=${pkgs.dbus}/bin/dbus-daemon" DCONF_DBUS_RUN_SESSION="${pkgs.dbus}/bin/dbus-run-session --dbus-daemon=${pkgs.dbus}/bin/dbus-daemon"
fi fi
run $DCONF_DBUS_RUN_SESSION ${pkgs.dconf}/bin/dconf load / < ${../usagers/dconf.ini} run $DCONF_DBUS_RUN_SESSION ${pkgs.dconf}/bin/dconf load / < ${../nixos/dconf.ini}
''; '';
}; };
+19
View File
@@ -0,0 +1,19 @@
# Profil générique "nixos" : poste non-nominatif de la flotte.
{ ... }:
{
imports = [
../common
../../diskos/plain.nix
];
# Compte de session non-nominatif, mot de passe "nixos" stable, sans
# expiration forcée (voir hosts/common). Nom d'utilisateur "nixos"
# aussi, pour unifier avec le mot de passe -- un seul mot à retenir.
users.users.nixos = {
isNormalUser = true;
description = "Nixos";
extraGroups = [ "networkmanager" ];
initialPassword = "nixos";
};
}
+199
View File
@@ -0,0 +1,199 @@
[org/cinnamon]
enabled-applets=['panel1:left:0:menu@cinnamon.org:0', 'panel1:left:1:separator@cinnamon.org:1', 'panel1:left:2:grouped-window-list@cinnamon.org:2', 'panel1:right:0:systray@cinnamon.org:3', 'panel1:right:1:xapp-status@cinnamon.org:4', 'panel1:right:2:notifications@cinnamon.org:5', 'panel1:right:3:printers@cinnamon.org:6', 'panel1:right:4:removable-drives@cinnamon.org:7', 'panel1:right:5:keyboard@cinnamon.org:8', 'panel1:right:6:favorites@cinnamon.org:9', 'panel1:right:7:network@cinnamon.org:10', 'panel1:right:8:sound@cinnamon.org:11', 'panel1:right:9:power@cinnamon.org:12', 'panel1:right:10:calendar@cinnamon.org:13', 'panel1:right:11:cornerbar@cinnamon.org:14']
next-applet-id=15
[org/cinnamon/desktop/background]
picture-uri='file:///etc/nixos/hosts/common/wallpaper/Nix/13977413.png'
[org/cinnamon/desktop/background/slideshow]
delay=15
image-source='directory:///etc/nixos/hosts/common/wallpaper/Nix'
[org/cinnamon/desktop/input-sources]
sources=[('xkb', 'fr')]
[org/cinnamon/desktop/interface]
cursor-size=24
cursor-theme='Bibata-Modern-Classic'
gtk-theme='Mint-Y-Dark-Blue'
icon-theme='Mint-Y-Blue'
toolkit-accessibility=false
[org/cinnamon/desktop/peripherals/mouse]
double-click=400
drag-threshold=8
speed=0.0
[org/cinnamon/desktop/peripherals/touchpad]
natural-scroll=false
speed=0.0
[org/cinnamon/desktop/screensaver]
layout-group=0
[org/cinnamon/desktop/sound]
event-sounds=false
[org/cinnamon/gestures]
swipe-down-2='PUSH_TILE_DOWN::end'
swipe-down-3='TOGGLE_OVERVIEW::end'
swipe-down-4='VOLUME_DOWN::end'
swipe-left-2='PUSH_TILE_LEFT::end'
swipe-left-3='WORKSPACE_NEXT::end'
swipe-left-4='WINDOW_WORKSPACE_PREVIOUS::end'
swipe-right-2='PUSH_TILE_RIGHT::end'
swipe-right-3='WORKSPACE_PREVIOUS::end'
swipe-right-4='WINDOW_WORKSPACE_NEXT::end'
swipe-up-2='PUSH_TILE_UP::end'
swipe-up-3='TOGGLE_EXPO::end'
swipe-up-4='VOLUME_UP::end'
tap-3='MEDIA_PLAY_PAUSE::end'
[org/cinnamon/settings-daemon/plugins/color]
night-light-enabled=true
night-light-last-coordinates=(48.866667, 2.3333330000000001)
night-light-schedule-mode='always'
night-light-temperature=uint32 5400
[org/cinnamon/theme]
name='Mint-Y-Dark-Blue'
[org/gnome/desktop/a11y/applications]
screen-reader-enabled=false
[org/gnome/desktop/a11y/mouse]
dwell-click-enabled=false
dwell-threshold=10
dwell-time=1.2
secondary-click-enabled=false
secondary-click-time=1.2
[org/gnome/desktop/input-sources]
sources=[('xkb', 'fr')]
xkb-options=['terminate:ctrl_alt_bksp']
[org/gnome/desktop/interface]
can-change-accels=false
clock-show-date=false
clock-show-seconds=false
cursor-blink=true
cursor-blink-time=1200
cursor-blink-timeout=10
cursor-size=24
cursor-theme='Bibata-Modern-Classic'
enable-animations=true
font-name='Ubuntu 10'
gtk-color-palette='black:white:gray50:red:purple:blue:light blue:green:yellow:orange:lavender:brown:goldenrod4:dodger blue:pink:light green:gray10:gray30:gray75:gray90'
gtk-color-scheme=''
gtk-enable-primary-paste=true
gtk-im-module=''
gtk-im-preedit-style='callback'
gtk-im-status-style='callback'
gtk-key-theme='Default'
gtk-theme='Mint-Y-Dark-Blue'
gtk-timeout-initial=200
gtk-timeout-repeat=20
icon-theme='Mint-Y-Blue'
menubar-accel='F10'
menubar-detachable=false
menus-have-tearoff=false
scaling-factor=uint32 0
text-scaling-factor=1.0
toolbar-detachable=false
toolbar-icons-size='large'
toolbar-style='both-horiz'
toolkit-accessibility=false
[org/gnome/desktop/peripherals/mouse]
accel-profile='default'
double-click=400
drag-threshold=8
left-handed=false
middle-click-emulation=false
natural-scroll=false
speed=0.0
[org/gnome/desktop/privacy]
disable-camera=false
disable-microphone=false
disable-sound-output=false
old-files-age=uint32 30
recent-files-max-age=7
remember-recent-files=true
remove-old-temp-files=false
remove-old-trash-files=false
[org/gnome/desktop/sound]
event-sounds=false
input-feedback-sounds=false
theme-name='LinuxMint'
[org/gnome/desktop/wm/preferences]
action-double-click-titlebar='toggle-maximize'
action-middle-click-titlebar='lower'
action-right-click-titlebar='menu'
audible-bell=false
auto-raise=false
auto-raise-delay=500
button-layout=':minimize,maximize,close'
disable-workarounds=false
focus-mode='click'
focus-new-windows='smart'
mouse-button-modifier='<Alt>'
num-workspaces=4
raise-on-click=true
resize-with-right-button=true
theme='Mint-Y'
titlebar-font='Ubuntu Medium 10'
titlebar-uses-system-font=false
visual-bell=false
visual-bell-type='fullscreen-flash'
workspace-names=@as []
[org/gnome/file-roller/dialogs/extract]
height=800
recreate-folders=true
skip-newer=false
width=1000
[org/gnome/file-roller/file-selector]
show-hidden=false
sidebar-size=300
sort-method='name'
sort-type='ascending'
window-size=(-1, -1)
[org/gnome/file-roller/listing]
list-mode='as-folder'
name-column-width=57
show-path=false
sort-method='name'
sort-type='ascending'
[org/gnome/file-roller/ui]
sidebar-width=200
window-height=480
window-width=600
[org/gtk/settings/file-chooser]
date-format='regular'
location-mode='path-bar'
show-hidden=false
show-size-column=true
show-type-column=true
sidebar-width=176
sort-column='name'
sort-directories-first=true
sort-order='ascending'
type-format='category'
window-position=(202, 73)
window-size=(1096, 822)
[org/nemo/window-state]
geometry='800x550+349+125'
maximized=false
sidebar-bookmark-breakpoint=3
start-with-sidebar=true
[org/x/apps/portal]
color-scheme='prefer-dark'
-18
View File
@@ -1,18 +0,0 @@
# Profil générique "usagers" : poste non-nominatif de la flotte.
{ ... }:
{
imports = [
../common
../../diskos/plain.nix
];
# Compte de session non-nominatif, mot de passe "nixos" stable, sans
# expiration forcée (voir hosts/common).
users.users.usagers = {
isNormalUser = true;
description = "Usagers";
extraGroups = [ "networkmanager" ];
initialPassword = "nixos";
};
}
-2
View File
@@ -1,2 +0,0 @@
[org/cinnamon/desktop/background]
picture-uri='file:///etc/nixos/hosts/common/wallpaper/Nix/13977413.png'
+2 -2
View File
@@ -132,8 +132,8 @@ fi
case "$CHOICE" in case "$CHOICE" in
1) 1)
echo echo
echo "Installation du profil générique 'usagers' sur $DEVICE..." echo "Installation du profil générique 'nixos' sur $DEVICE..."
do_install "$FLEET_REPO" "usagers" "diskos/plain.nix" do_install "$FLEET_REPO" "nixos" "diskos/plain.nix"
;; ;;
2) 2)