From 8cca5d3ebb573f1dbeb9ca9f07797992e739eb7b Mon Sep 17 00:00:00 2001 From: Damien Date: Sat, 12 Sep 2026 15:53:32 +0200 Subject: [PATCH] Externalise le module disque (comme nixos_users) + ajoute nixos-existing hosts/nixos/configuration.nix importait diskos/plain.nix en dur -- deplace vers flake.nix (injection externe), meme pattern que nixos_users/flake.nix (mkHost). Necessaire pour ajouter nixos-existing : meme profil logiciel que "nixos", mais avec le hardware-configuration.nix reel de la machine a la place de diskos/plain.nix -- pour appliquer cette config sur un NixOS deja installe, sans toucher au partitionnement existant (meme principe que pxe-server, --impure requis). Deplace aussi system.autoUpgrade.flake hors de hosts/common/default.nix (etait fixe sur #nixos pour tous les profils) vers une injection par attribut dans flake.nix : sans ca, une machine nixos-existing aurait bascule sur l'attribut "nixos" (disko) a son prochain auto-upgrade, avec un layout disque potentiellement incompatible avec l'existant. Verifie : nix flake check --no-build passe pour "nixos" ; "nixos-existing" echoue nur pour la meme raison attendue que pxe-server (hardware-configuration.nix absent hors du vrai serveur/poste), pas une regression. Dry-run build de "nixos" toujours complet. Co-Authored-By: Claude Sonnet 5 --- flake.nix | 21 +++++++++++++++++++++ hosts/common/default.nix | 7 ++++++- hosts/nixos/configuration.nix | 5 ++++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/flake.nix b/flake.nix index 0c703ea..dab962b 100644 --- a/flake.nix +++ b/flake.nix @@ -19,6 +19,9 @@ outputs = { self, nixpkgs, disko, home-manager, ... }: + let + repoUrl = "git+https://gitea.miniclic.net/Damien/Nixos_Fleet.git"; + in { nixosConfigurations = { nixos = nixpkgs.lib.nixosSystem { @@ -27,6 +30,24 @@ disko.nixosModules.disko home-manager.nixosModules.home-manager ./hosts/nixos/configuration.nix + ./diskos/plain.nix + { system.autoUpgrade.flake = "${repoUrl}#nixos"; } + ]; + }; + + # Même profil logiciel que "nixos", mais sans disko : pour une + # machine où NixOS est déjà installé (partitionnement existant, + # quel qu'il soit, à ne pas toucher) -- utilise le + # hardware-configuration.nix réel de cette machine à la place de + # diskos/plain.nix, comme pxe-server. --impure obligatoire au + # nixos-rebuild (lit un chemin hors du flake). + nixos-existing = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + home-manager.nixosModules.home-manager + ./hosts/nixos/configuration.nix + /etc/nixos/hardware-configuration.nix + { system.autoUpgrade.flake = "${repoUrl}#nixos-existing"; } ]; }; diff --git a/hosts/common/default.nix b/hosts/common/default.nix index f4cafe7..4c08c92 100644 --- a/hosts/common/default.nix +++ b/hosts/common/default.nix @@ -168,11 +168,16 @@ in # (déjà la valeur par défaut de ce module -- explicité ici) : si la # machine est éteinte au moment prévu, la maj se lance dès le # prochain démarrage plutôt que d'attendre la semaine suivante. + # `flake` n'est PAS fixé ici : il dépend de l'attribut réellement + # utilisé pour cette machine (nixos vs nixos-existing, disko ou pas) + # -- injecté par flake.nix, comme dans nixos_users. Le fixer ici + # ferait basculer une machine "nixos-existing" vers l'attribut + # "nixos" (disko) à son prochain auto-upgrade, avec un layout disque + # potentiellement incompatible avec l'existant. system.autoUpgrade = { enable = true; persistent = true; dates = "weekly"; - flake = "git+https://gitea.miniclic.net/Damien/Nixos_Fleet.git#nixos"; }; # Compte admin de la flotte : root, mot de passe "nixos" STABLE (pas diff --git a/hosts/nixos/configuration.nix b/hosts/nixos/configuration.nix index cb10a50..75799fc 100644 --- a/hosts/nixos/configuration.nix +++ b/hosts/nixos/configuration.nix @@ -1,10 +1,13 @@ # Profil générique "nixos" : poste non-nominatif de la flotte. +# Le module disque (diskos/plain.nix pour une install neuve, ou le +# hardware-configuration.nix réel d'une machine déjà installée) est +# injecté par flake.nix, pas ici -- ce fichier ne connaît pas le +# layout disque, comme dans nixos_users. { ... }: { imports = [ ../common - ../../diskos/plain.nix ]; # Compte de session non-nominatif, mot de passe "nixos" stable, sans