baremetal-builders: more 'intelligent' gc

This commit is contained in:
Yureka 2024-07-26 12:17:04 +02:00
parent bd8aa2eb08
commit 15a684c5d7

View file

@ -146,14 +146,23 @@ in
}; };
systemd.services.hydra-gc = { systemd.services.hydra-gc = {
wantedBy = [ "multi-user.target" ];
description = "Nix Garbage Collector"; description = "Nix Garbage Collector";
script = "exec ${config.nix.package.out}/bin/nix-store --gc --store /mnt"; script = ''
while : ; do
percent_filled=$(($(stat -f --format="100-(100*%a/%b)" /)))
if [ "$percent_filled" -gt "85" ]; then
${config.nix.package.out}/bin/nix-store --gc --max-freed 100G --store /mnt
else
break
fi
done
'';
serviceConfig.Type = "oneshot"; serviceConfig.Type = "oneshot";
serviceConfig.User = "builder"; serviceConfig.User = "builder";
}; };
systemd.timers.hydra-gc = { systemd.timers.hydra-gc = {
timerConfig.OnStartupSec = "4h"; timerConfig.OnUnitInactiveSec = "10min";
timerConfig.OnUnitActiveSec = "20h";
wantedBy = [ "timers.target" ]; wantedBy = [ "timers.target" ];
}; };
systemd.timers.hydra-gc.timerConfig.Persistent = true; systemd.timers.hydra-gc.timerConfig.Persistent = true;