74 lines
2.9 KiB
Nix
74 lines
2.9 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"
|
|
];
|
|
|
|
# netboot.nix définit DEUX tmpfs distincts, ni l'un ni l'autre avec une
|
|
# taille explicite -> plafonnés à 50% de la RAM chacun par défaut :
|
|
# - "/" : la racine du système live lui-même (petite)
|
|
# - "/nix/.rw-store" : la vraie zone où atterrissent tous les nouveaux
|
|
# paquets téléchargés/construits pendant l'install
|
|
# (overlay au-dessus du squashfs .ro-store en
|
|
# lecture seule). C'est CELLE-LÀ qui sature en
|
|
# premier sur un système complet (Cinnamon +
|
|
# Firefox + LibreOffice + VLC...), pas "/".
|
|
fileSystems."/".options = [ "size=20%" ];
|
|
fileSystems."/nix/.rw-store".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";
|
|
}
|