Aller au contenu

Dossier machine, disposition et migration

Chaque hôte a son dossier usr/machines/<hôte>/. Les fichiers y sont rangés selon qui les écrit : vous, l’installation, la machine elle-même ou le générateur. Le framework les importe un par un, il n’y a pas de default.nix.

usr/machines/<hôte>/
configuration.nix # vous : seul fichier à éditer
<autres>.nix # vous : importés depuis configuration.nix
install/
disko.nix # disposition du disque, figée à l'installation
state.nix # system.stateVersion, figé à l'installation
hardware/
hardware-configuration.nix # relevé sur la machine
detected-hardware.nix # pilotes réseau relevés (just detect-hw)
var/generated/hosts/<hôte>.nix # drapeaux de démarrage déduits du disque
FichierÉcrit parRéécritSi perdu
configuration.nixvous (semé par just generate)jamaistravail perdu
install/disko.nixjust generate (profil et devices)tant que l’hôte n’est pas installédisposition réelle du disque inconnue
install/state.nixjust install, just install-keyjamaisdonnées des services incohérentes
hardware/just install, copy-hw, detect-hwà chaque relevérelevé à refaire sur la machine
var/generated/hosts/<hôte>.nixjust generateà chaque générationrien, il est recalculé

var/generated/hosts/<hôte>.nix n’existe que si le disque impose des réglages de démarrage (RAID logiciel, marqueurs NEEDEDFORBOOT).

install/state.nix scelle l’hôte. just install l’écrit juste avant le formatage, avec la release nixpkgs du moment (la valeur qu’écrirait nixos-generate-config).

  • Avant : install/disko.nix suit etc/config.yaml à chaque just generate.
  • Après : install/disko.nix ne bouge plus. Le bloc disko d’etc/config.yaml n’a plus d’effet.
BesoinAction
Réinstaller à l’identique (restauration, bases de données)ne rien toucher
Changer de disque en gardant les donnéessupprimer install/disko.nix, puis just generate
Repartir d’une machine neuve, sans reprisesupprimer install/state.nix

Changement cassant : l’ancienne disposition (default.nix importé comme point d’entrée) n’est plus lue.

AncienNouveau
default.nixconfiguration.nix, sans les imports ni stateVersion
system.stateVersion de default.nixinstall/state.nix
disko.nixinstall/disko.nix
hardware-configuration.nixhardware/hardware-configuration.nix
detected-hardware.nixhardware/detected-hardware.nix
generated-configuration.nixvar/generated/hosts/<hôte>.nix, généré
  1. Relever les devices forcés par l’ancien generated-configuration.nix (lignes disko.devices.disk.<disque>.device = lib.mkForce "…"). Ils ne sont plus générés.

  2. Déplacer les fichiers

    Fenêtre de terminal
    cd usr/machines/<hôte>
    mkdir -p install hardware
    git mv disko.nix install/disko.nix
    git mv hardware-configuration.nix hardware/ # si présent
    git mv detected-hardware.nix hardware/ # si présent
    git mv default.nix configuration.nix
    git rm generated-configuration.nix
  3. Reporter les devices relevés à l’étape 1 dans install/disko.nix, quand ils diffèrent de la valeur device du fichier.

  4. Créer install/state.nix avec la valeur exacte de l’ancien system.stateVersion :

    # usr/machines/<hôte>/install/state.nix
    { system.stateVersion = "25.11"; }
  5. Alléger configuration.nix : retirer les imports de not-detected.nix, generated-configuration.nix, hardware-configuration.nix, disko.nix, detected-hardware.nix et la ligne system.stateVersion. Garder tout le reste.

  6. Régénérer et commiter

    Fenêtre de terminal
    just clean
    git add usr/machines var/generated