Files
Nixos_Fleet/installer/installer-base.nix
T

70 lines
2.7 KiB
Nix

# Environnement live commun aux deux formes d'image (PXE netboot / ISO
# USB). Contient juste de quoi partitionner et lancer disko-install ; la
# vraie configuration 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"
];
# Le tmpfs racine de l'image live (netboot-minimal.nix) n'a par défaut
# aucune taille explicite -> plafonné à 50% de la RAM par le noyau. Le
# disque cible n'est pas encore monté à ce stade de l'install (le
# paquet complet transite d'abord par ce tmpfs), donc un système
# complet (Cinnamon + Firefox + LibreOffice + VLC...) peut dépasser
# cette limite même avec beaucoup de RAM disponible.
fileSystems."/".options = [ "size=90%" ];
# Certains PC du parc n'ont que 4 Go de RAM. Le disque cible ne peut pas
# servir de secours (disko-install l'efface entièrement en une seule
# opération, un swap posé dessus avant serait détruit en cours de
# route) : on utilise du swap compressé en RAM (zram) à la place, qui
# marche pareil en PXE et en USB sans dépendre d'un périphérique externe.
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
installScript
];
# disko-install n'est pas préinstallé : install.sh l'invoque via
# `nix run github:nix-community/disko#disko-install`, ce qui évite de
# dépendre d'un nom de paquet nixpkgs précis (pas de package `disko`
# garanti tel quel côté nixpkgs) et reste conforme à l'usage documenté
# du projet.
networking.networkmanager.enable = true;
services.xserver.xkb.layout = "fr";
console.keyMap = "fr";
# Root autologin sur tty1, l'installeur se lance automatiquement au
# login. S'il échoue ou qu'on le quitte, on retombe sur un shell root
# normal pour dépanner à la main — pas de piège sans issue.
# mkForce : le profil installeur officiel (installation-device.nix)
# définit aussi cette option (autologin "nixos"), même priorité que la
# nôtre sans mkForce -> 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";
}