summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/nixos/profiles/server.nix14
-rw-r--r--modules/shared/defaults/nix.nix2
2 files changed, 12 insertions, 4 deletions
diff --git a/modules/nixos/profiles/server.nix b/modules/nixos/profiles/server.nix
index a4eae44..fe369ef 100644
--- a/modules/nixos/profiles/server.nix
+++ b/modules/nixos/profiles/server.nix
@@ -6,6 +6,11 @@
}:
let
cfg = config.profiles.server;
+
+ # 2^30
+ # Why doesn't nix have a `pow`???
+ gb = 1024 * 1024 * 1024;
+ minimumStorageKb = 15 * gb;
in
{
options.profiles.server = {
@@ -35,9 +40,12 @@ in
};
nix.gc = {
- # Every ~2 days
- dates = "Mon,Wed,Fri *-*-* 00:00:00";
- options = "-d --delete-older-than 2d";
+ dates = "*:0/30"; # Every 30 minutes
+ # GC to stay above minimumStorageBytes
+ options = toString [
+ "--delete-older-than 5d"
+ "--max-freed \"$((${toString minimumStorageKb} - 1024 * $(df -k --output=avail /nix/store | tail -n 1)))\""
+ ];
};
traits = {
diff --git a/modules/shared/defaults/nix.nix b/modules/shared/defaults/nix.nix
index 23becf9..6cc896d 100644
--- a/modules/shared/defaults/nix.nix
+++ b/modules/shared/defaults/nix.nix
@@ -35,7 +35,7 @@ in
gc = {
automatic = lib.mkDefault true;
- options = lib.mkDefault "--delete-older-than 2d";
+ options = lib.mkDefault "--delete-older-than 5d";
};
registry = lib.mapAttrs (lib.const (