summaryrefslogtreecommitdiff
path: root/modules/nixos/profiles/server.nix
diff options
context:
space:
mode:
authorSeth Flynn <[email protected]>2025-02-06 21:01:11 -0500
committerSeth Flynn <[email protected]>2025-02-07 22:51:57 -0500
commit7baba7111bffbf3dafc41c66d7cc138526294f53 (patch)
treecf202cf9c7c02af8ad11a91dfd315709504add3f /modules/nixos/profiles/server.nix
parent9f4ec84e3d7f95bfc3b3305541b098423278e389 (diff)
modules: better tune `nix.gc` settings
Diffstat (limited to 'modules/nixos/profiles/server.nix')
-rw-r--r--modules/nixos/profiles/server.nix14
1 files changed, 11 insertions, 3 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 = {