Files
Nixos_Fleet/installer/installer-base.nix
T
DamienandClaude Sonnet 5 fddcca0e51 Comments: style plus concis (calé sur modules/anssi/, écrit par des pros)
Aucun changement fonctionnel -- juste les commentaires : essais de
justification en plusieurs paragraphes remplacés par des notes courtes,
type/quoi/pourquoi en une ou deux lignes. Corrige au passage un
commentaire obsolète dans installer-base.nix qui décrivait encore l'usage
de disko-install (abandonné depuis pour disko + nixos-install séparés).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-09 17:42:51 +02:00

69 lines
2.3 KiB
Nix

# 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";
}