# Environnement live commun aux deux formes d'image (PXE netboot / ISO # USB). Contient juste de quoi partitionner et installer ; la config # cible est toujours récupérée depuis git au moment de l'install (repo # public nixos_fleet ou repo privé nixos_users). { pkgs, lib, ... }: let installScript = pkgs.writeShellScriptBin "fleet-install" (builtins.readFile ./install.sh); in { nix.settings.experimental-features = [ "nix-command" "flakes" ]; # netboot.nix définit "/" et "/nix/.rw-store" (overlay où atterrissent # les paquets téléchargés/construits pendant l'install) sans taille # explicite -> 50% de la RAM chacun par défaut. .rw-store sature en # premier sur un système complet (Cinnamon + Firefox + LibreOffice + # VLC), pas "/". mkForce nécessaire : netboot.nix utilise # mkImageMediaOverride (priorité 60), une assignation simple (100) est # ignorée ; mkForce remplace toute la liste, d'où mode=0755 remis ici. fileSystems."/".options = lib.mkForce [ "mode=0755" "size=20%" ]; fileSystems."/nix/.rw-store".options = lib.mkForce [ "mode=0755" "size=90%" ]; # Certains PC du parc n'ont que 4 Go de RAM. Le disque cible ne peut # pas servir de secours ici (pas encore partitionné à ce stade) : swap # compressé en RAM (zram), identique en PXE et en USB. zramSwap = { enable = true; memoryPercent = 100; # jusqu'à 1x la RAM en swap compressé (~2-3x effectif) }; environment.systemPackages = with pkgs; [ git parted gptfdisk util-linux # lsblk, fallocate e2fsprogs # chattr (NOCOW pour le swapfile sur btrfs) installScript ]; networking.networkmanager.enable = true; services.xserver.xkb.layout = "fr"; console.keyMap = "fr"; # Root autologin sur tty1, l'installeur se lance automatiquement au # login. Échec ou sortie -> shell root normal pour dépanner. # mkForce : le profil installeur officiel (installation-device.nix) # définit aussi cette option, même priorité -> conflit sinon. services.getty.autologinUser = lib.mkForce "root"; users.users.root.password = lib.mkForce ""; programs.bash.loginShellInit = '' if [ "$(tty)" = "/dev/tty1" ] && [ -z "''${FLEET_INSTALLER_RAN:-}" ]; then export FLEET_INSTALLER_RAN=1 ${installScript}/bin/fleet-install fi ''; system.stateVersion = "26.05"; }