{ config, ... }: let # Free-Space-Schwellen und Rückhaltedauer aus dem Phase-1-Preflight # (docs/intent/nix-gc-plattform.md, 2026-09-05): blunix hat kaum Reserve # (29G Store auf einer 37G-Platte), pinix deutlich mehr Puffer, läuft # aber auf einer SD-Karte -- deshalb dort weiterhin nur wöchentliches GC # statt eines aggressiveren Zeitplans (SD-Karten-Schreibverschleiß). # # gc.dates ist seit docs/intent/nix-gc-daily.md (2026-09-11, # docs/research/full-system-aufit.md Punkt 1: 208 nixos-rebuild-Läufe # und 34 Generationen in <48h auf blunix, "No space left on device") # ebenfalls pro Host statt eines einzigen gemeinsamen Werts: nur blunix # bekommt den täglichen Zeitplan, der genau dieses Problem behebt; # pinix behält die o.g. SD-Karten-Begründung unverändert bei. Ein # vorheriger Versuch, dates für beide Hosts gemeinsam auf "daily" zu # setzen, widersprach genau diesem Kommentar und wurde im Review # zurückgewiesen. perHost = { blunix = { minFreeGiB = 1; maxFreeGiB = 3; gcDates = "daily"; }; pinix = { minFreeGiB = 2; maxFreeGiB = 6; gcDates = "weekly"; }; }; thresholds = perHost.${config.networking.hostName} or (throw "nix-gc.nix: kein min-free/max-free-Eintrag für Host ${config.networking.hostName} definiert"); gib = n: n * 1024 * 1024 * 1024; in { # Nur in hosts/blunix/localServices/default.nix und # hosts/pinix/localServices/default.nix importiert -- ausdrücklich nicht # über hosts/globalServices/default.nix, das auch tnix importiert. tnix # bleibt bewusst außen vor (Laptop, manuell verwaltet). nix.gc = { automatic = true; dates = thresholds.gcDates; options = "--delete-older-than 30d"; }; nix.settings.min-free = gib thresholds.minFreeGiB; nix.settings.max-free = gib thresholds.maxFreeGiB; # Beide Optionen sind unabhängig vom tatsächlich aktiven Loader gültig # (grub auf blunix, generic-extlinux-compatible auf pinix) -- die jeweils # ungenutzte bleibt wirkungslos, kein bedingtes Schalten nötig. boot.loader.grub.configurationLimit = 10; boot.loader.generic-extlinux-compatible.configurationLimit = 10; }