diff --git a/README.md b/README.md index b4c7f6b..574924a 100644 --- a/README.md +++ b/README.md @@ -373,6 +373,8 @@ Boot BIOS et boot UEFI, sur le parc réel. Test sur 1-2 PC réels d'abord. +PC à seulement 4 Go de RAM : le zram (`installer-base.nix`) doit suffire pour installer `usagers` (Cinnamon + Firefox + LibreOffice + VLC), mais pas testé en dessous de 12 Go pour l'instant. Si ça échoue encore sur du 4 Go réel : alléger la liste de paquets de `usagers` plutôt que d'insister sur le zram seul. + ```bash nix flake check nix build .#nixosConfigurations.usagers.config.system.build.toplevel diff --git a/hosts/common/base.nix b/hosts/common/base.nix index 24903fa..1497973 100644 --- a/hosts/common/base.nix +++ b/hosts/common/base.nix @@ -34,6 +34,14 @@ services.openssh.enable = true; networking.firewall.enable = true; + # Certains PC du parc n'ont que 4 Go de RAM (Cinnamon + Firefox + + # LibreOffice + VLC peuvent solliciter la mémoire) — swap compressé en + # RAM, marche identiquement quelle que soit la machine. + zramSwap = { + enable = true; + memoryPercent = 50; + }; + nix.settings.experimental-features = [ "nix-command" "flakes" diff --git a/installer/installer-base.nix b/installer/installer-base.nix index e3975ca..60ea1c6 100644 --- a/installer/installer-base.nix +++ b/installer/installer-base.nix @@ -13,6 +13,24 @@ in "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