From bd5cb05ecf4b0327f15d599a3bb8ecd735818f39 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Thu, 30 Oct 2025 17:11:43 +0900 Subject: [PATCH] kommode/gitea: hire cleaners --- hosts/kommode/services/gitea/default.nix | 1 + .../services/gitea/vaskepersonalet.nix | 59 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 hosts/kommode/services/gitea/vaskepersonalet.nix diff --git a/hosts/kommode/services/gitea/default.nix b/hosts/kommode/services/gitea/default.nix index e89a927..f953972 100644 --- a/hosts/kommode/services/gitea/default.nix +++ b/hosts/kommode/services/gitea/default.nix @@ -8,6 +8,7 @@ in { ./customization ./gpg.nix ./import-users + ./vaskepersonalet.nix ./web-secret-provider ]; diff --git a/hosts/kommode/services/gitea/vaskepersonalet.nix b/hosts/kommode/services/gitea/vaskepersonalet.nix new file mode 100644 index 0000000..63d6da9 --- /dev/null +++ b/hosts/kommode/services/gitea/vaskepersonalet.nix @@ -0,0 +1,59 @@ +{ config, ... }: +let + cfg = config.services.gitea; + cacheDir = "/var/cache/${config.systemd.services.gitea.serviceConfig.CacheDirectory}"; +in +{ + systemd.services."gitea-vaskepersonalet" = { + description = "yeeet"; + startAt = "hourly"; + + serviceConfig = rec { + User = cfg.user; + Group = cfg.group; + + RuntimeDirectory = "gitea-vaskepersonalet"; + RootDirectory = "/run/${RuntimeDirectory}"; + + BindPaths = [ + builtins.storeDir + cacheDir + cfg.dump.backupDir + ]; + }; + + script = let + percentageLimit = 80; + in '' + USED=$(df --output=pcent '${cacheDir}' | grep '[0-9]' | tr -d '%') + if [[ $USED -lt ${toString percentageLimit} ]]; then exit 0; fi + + echo "omg omg, we're running out of space, imma yeet the cache" + + rm -rf '${cacheDir}'/* + echo "yeetus deletus" + + USED=$(df --output=pcent '${cacheDir}' | grep '[0-9]' | tr -d '%') + if [[ $USED -lt ${toString percentageLimit} ]]; then exit 0; fi + + echo "" + echo "bruh, still low on space, yeeting old backups" + echo "" + + # tail -n+2 ensure we keep at least one backup. + for file in $(ls -t1 '${cfg.dump.backupDir}' | sort --reverse | tail -n+2); do + echo "> Chose $file" + echo "> Do you really want to release this pokemon? [Y/n] Y" + rm "$file" + echo "> ..." + echo "> The pokemon was released back into the wild" + echo "" + + USED=$(df --output=pcent '${cacheDir}' | grep '[0-9]' | tr -d '%') + if [[ $USED -lt ${toString percentageLimit} ]]; then exit 0; fi + done + + echo "No way, we're still out of space? Not my problem anymore" + ''; + }; +}