From 2efdcaeecba7baaf14dbe9d5772d7131ad532a0a Mon Sep 17 00:00:00 2001 From: Damien Date: Sat, 12 Sep 2026 14:23:18 +0200 Subject: [PATCH] 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 --- README.md | 30 ++--- flake.nix | 4 +- hosts/common/default.nix | 16 +-- hosts/nixos/configuration.nix | 19 +++ hosts/nixos/dconf.ini | 199 ++++++++++++++++++++++++++++++++ hosts/usagers/configuration.nix | 18 --- hosts/usagers/dconf.ini | 2 - installer/install.sh | 4 +- 8 files changed, 246 insertions(+), 46 deletions(-) create mode 100644 hosts/nixos/configuration.nix create mode 100644 hosts/nixos/dconf.ini delete mode 100644 hosts/usagers/configuration.nix delete mode 100644 hosts/usagers/dconf.ini diff --git a/README.md b/README.md index afed817..8da4e0f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # 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. @@ -122,11 +122,11 @@ N'y touche pas. PC normal : -Utilisateur : `usagers` +Utilisateur : `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 : @@ -313,7 +313,7 @@ IP qui changent tout le temps → un autre DHCP tourne déjà, repasser `standal ## 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). @@ -323,7 +323,7 @@ IP qui changent tout le temps → un autre DHCP tourne déjà, repasser `standal ## 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 : @@ -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 ``` -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é -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à) : @@ -343,14 +343,14 @@ Par défaut, `usagers` garde `nixos` comme mot de passe stable, sans expiration system.activationScripts.forcePasswordChangeOnce.text = '' marker=/var/lib/nixos-force-pwchange-done if [ ! -e "$marker" ]; then - ${pkgs.shadow}/bin/chage -d 0 usagers + ${pkgs.shadow}/bin/chage -d 0 nixos mkdir -p /var/lib touch "$marker" 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 @@ -417,7 +417,7 @@ sudo systemctl start nixos-upgrade.service ```bash cd /etc/nixos 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. @@ -436,16 +436,16 @@ Boot BIOS et boot UEFI, sur le parc réel. 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 -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 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 ``` -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. @@ -494,7 +494,7 @@ Aucun paquet à installer manuellement : `enable = true` suffit dans les deux ca Après édition : ```bash -sudo nixos-rebuild switch --flake .#usagers +sudo nixos-rebuild switch --flake .#nixos ``` --- diff --git a/flake.nix b/flake.nix index 724ceea..0c703ea 100644 --- a/flake.nix +++ b/flake.nix @@ -21,12 +21,12 @@ { self, nixpkgs, disko, home-manager, ... }: { nixosConfigurations = { - usagers = nixpkgs.lib.nixosSystem { + nixos = nixpkgs.lib.nixosSystem { system = "x86_64-linux"; modules = [ disko.nixosModules.disko home-manager.nixosModules.home-manager - ./hosts/usagers/configuration.nix + ./hosts/nixos/configuration.nix ]; }; diff --git a/hosts/common/default.nix b/hosts/common/default.nix index d238253..f4cafe7 100644 --- a/hosts/common/default.nix +++ b/hosts/common/default.nix @@ -172,7 +172,7 @@ in enable = true; persistent = true; 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 @@ -200,15 +200,17 @@ in ]; # 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 # met à jour par un simple `dconf dump /org/cinnamon/ > dconf.ini` + # 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), - # à enrichir plus tard de la même façon. + # la main en Nix. Repris tel quel du dconf d'oreo (panneau, thèmes, + # 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.backupFileExtension = "hm-backup"; # évite un échec si un fichier existe déjà (migration) - home-manager.users.usagers = + home-manager.users.nixos = { pkgs, lib, ... }: { home.stateVersion = "26.05"; @@ -217,13 +219,13 @@ in # 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é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 DCONF_DBUS_RUN_SESSION="" else DCONF_DBUS_RUN_SESSION="${pkgs.dbus}/bin/dbus-run-session --dbus-daemon=${pkgs.dbus}/bin/dbus-daemon" 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} ''; }; diff --git a/hosts/nixos/configuration.nix b/hosts/nixos/configuration.nix new file mode 100644 index 0000000..cb10a50 --- /dev/null +++ b/hosts/nixos/configuration.nix @@ -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"; + }; +} diff --git a/hosts/nixos/dconf.ini b/hosts/nixos/dconf.ini new file mode 100644 index 0000000..bab4ce5 --- /dev/null +++ b/hosts/nixos/dconf.ini @@ -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='' +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' diff --git a/hosts/usagers/configuration.nix b/hosts/usagers/configuration.nix deleted file mode 100644 index e7fe528..0000000 --- a/hosts/usagers/configuration.nix +++ /dev/null @@ -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"; - }; -} diff --git a/hosts/usagers/dconf.ini b/hosts/usagers/dconf.ini deleted file mode 100644 index 88f6d40..0000000 --- a/hosts/usagers/dconf.ini +++ /dev/null @@ -1,2 +0,0 @@ -[org/cinnamon/desktop/background] -picture-uri='file:///etc/nixos/hosts/common/wallpaper/Nix/13977413.png' diff --git a/installer/install.sh b/installer/install.sh index c8df3fb..93a8f10 100644 --- a/installer/install.sh +++ b/installer/install.sh @@ -132,8 +132,8 @@ fi case "$CHOICE" in 1) echo - echo "Installation du profil générique 'usagers' sur $DEVICE..." - do_install "$FLEET_REPO" "usagers" "diskos/plain.nix" + echo "Installation du profil générique 'nixos' sur $DEVICE..." + do_install "$FLEET_REPO" "nixos" "diskos/plain.nix" ;; 2)