From c825ba2b19134467b94d1e421864418118e0a10b Mon Sep 17 00:00:00 2001 From: Bryan Richter Date: Fri, 4 Apr 2025 08:19:03 +0300 Subject: [PATCH 1/2] FIXME: Rotate stackage-server's hoogle files Stackage currenly only uses one of these in any given moment, anyway --- .../nixos-modules/stackage-server.nix | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/stackage-builder/nixos-modules/stackage-server.nix b/stackage-builder/nixos-modules/stackage-server.nix index affc789..977977b 100644 --- a/stackage-builder/nixos-modules/stackage-server.nix +++ b/stackage-builder/nixos-modules/stackage-server.nix @@ -138,6 +138,38 @@ in { }; networking.firewall.allowedTCPPorts = [ 22 80 443 ]; + # Clean up stackage-server's extraneous hoogle files. + + systemd.services.stackage-hoogle-cleanup = + let myScript = pkgs.writeShellApplication { + name = "stackage-hoogle-cleanup"; + text = '' + ## Delete all but the five latest directories in /home/${srvName}/hoogle. + cd "/home/${srvName}/hoogle" + # shellcheck disable=SC2012 + # FIXME: Keep the latest lts and nightlies both. + # ls --zero -1tr | head -zn -5 | xargs -0 --no-run-if-empty rm -r + ''; + runtimeInputs = [ pkgs.coreutils pkgs.findutils ]; + }; + in + { + description = "Stackage server hoogle cleanup"; + script = lib.getExe myScript; + serviceConfig = { + Type = "oneshot"; + }; + }; + + systemd.timers.stackage-hoogle-cleanup = { + description = "Run stackage-hoogle-cleanup every day"; + wantedBy = [ "timers.target" ]; + timerConfig = { + OnCalendar = "daily"; + Persistent = true; + }; + }; + # STACKAGE UPDATER users.groups.${updateName} = { From e99a2cfecd8f723f0a8adc9746ddfaf56f92ab9f Mon Sep 17 00:00:00 2001 From: Bryan Richter Date: Fri, 4 Apr 2025 08:19:03 +0300 Subject: [PATCH 2/2] Rotate stackage-server's hoogle files Stackage currenly only uses one of these in any given moment, anyway --- stackage-builder/nixos-modules/stackage-server.nix | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/stackage-builder/nixos-modules/stackage-server.nix b/stackage-builder/nixos-modules/stackage-server.nix index 977977b..7f908cd 100644 --- a/stackage-builder/nixos-modules/stackage-server.nix +++ b/stackage-builder/nixos-modules/stackage-server.nix @@ -144,11 +144,16 @@ in { let myScript = pkgs.writeShellApplication { name = "stackage-hoogle-cleanup"; text = '' - ## Delete all but the five latest directories in /home/${srvName}/hoogle. + ## Keep 250 most recently accessed databases for both LTS and Nightly separately. + cd "/home/${srvName}/hoogle" - # shellcheck disable=SC2012 - # FIXME: Keep the latest lts and nightlies both. - # ls --zero -1tr | head -zn -5 | xargs -0 --no-run-if-empty rm -r + for pattern in "./lts-*" "./nightly-*"; do + find . -type f -path "$pattern" -printf "%A@\t%p\0" | + sort -z -n | head -z -n -250 | cut -z -f2- | xargs -0 -r rm -f + done + + # Clean up empty directories + find . -type d -empty -delete ''; runtimeInputs = [ pkgs.coreutils pkgs.findutils ]; }; @@ -158,6 +163,7 @@ in { script = lib.getExe myScript; serviceConfig = { Type = "oneshot"; + User = srvName; }; };