From 7baba7111bffbf3dafc41c66d7cc138526294f53 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Thu, 6 Feb 2025 21:01:11 -0500 Subject: modules: better tune `nix.gc` settings --- modules/nixos/profiles/server.nix | 14 +++++++++++--- modules/shared/defaults/nix.nix | 2 +- 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 ( -- cgit v1.2.3