about summary refs log tree commit diff
path: root/modules/server
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2022-10-21 22:02:35 +0000
committerAlyssa Ross <hi@alyssa.is>2022-10-21 22:03:09 +0000
commitf01ed9d20d4f669cd1bd598405201fced8689ea9 (patch)
treec0f343a7ac4c08781f37f1af1dfd56485854cb53 /modules/server
parent5b0e44f6bfd8aed6458d3095d4bfb6c0fd802fa8 (diff)
downloadnixlib-f01ed9d20d4f669cd1bd598405201fced8689ea9.tar
nixlib-f01ed9d20d4f669cd1bd598405201fced8689ea9.tar.gz
nixlib-f01ed9d20d4f669cd1bd598405201fced8689ea9.tar.bz2
nixlib-f01ed9d20d4f669cd1bd598405201fced8689ea9.tar.lz
nixlib-f01ed9d20d4f669cd1bd598405201fced8689ea9.tar.xz
nixlib-f01ed9d20d4f669cd1bd598405201fced8689ea9.tar.zst
nixlib-f01ed9d20d4f669cd1bd598405201fced8689ea9.zip
modules/vultr-mon: init
This does last resort cleanups of vultr jobs used to fill the Spectrum binary cache, to ensure I don't accidentally massively overspend.
Diffstat (limited to 'modules/server')
-rw-r--r--modules/server/spectrum/default.nix2
-rw-r--r--modules/server/spectrum/vultr-mon/default.nix24
2 files changed, 25 insertions, 1 deletions
diff --git a/modules/server/spectrum/default.nix b/modules/server/spectrum/default.nix
index 2508b896c2fc..b819d653f5f1 100644
--- a/modules/server/spectrum/default.nix
+++ b/modules/server/spectrum/default.nix
@@ -3,7 +3,7 @@
 {
   imports = [
     ./acme ./cgit ./git-http-backend ./nginx ./postfix ./public-inbox
-    ./spectrumbot
+    ./spectrumbot ./vultr-mon
   ];
 
   nix.settings.substituters = [ "https://cache.dataaturservice.se/spectrum/" ];
diff --git a/modules/server/spectrum/vultr-mon/default.nix b/modules/server/spectrum/vultr-mon/default.nix
new file mode 100644
index 000000000000..50890d68ccbb
--- /dev/null
+++ b/modules/server/spectrum/vultr-mon/default.nix
@@ -0,0 +1,24 @@
+{ pkgs, ... }:
+
+{
+  systemd.services.vultr-mon = {
+    after = [ "network-online.target" ];
+    requires = [ "network-online.target" ];
+    path = with pkgs; [ coreutils curl findutils jq ];
+    script = ''
+      api_base=https://api.vultr.com/v2
+      curl -fsLSH @/var/lib/vultr-mon/key $api_base/instances |
+          jq -r '.instances[] | select(.date_created < $date) | .id' --arg date "$(date -uIseconds -d '24 hours ago')" |
+          xargs -rtd '\n' -I% curl -fsLSX DELETE -H @/var/lib/vultr-mon/key $api_base/instances/%
+    '';
+    serviceConfig.DynamicUser = true;
+    serviceConfig.StateDirectory = "vultr-mon";
+    serviceConfig.Type = "oneshot";
+  };
+
+  systemd.timers.vultr-mon = {
+    wantedBy = [ "timers.target" ];
+    timerConfig.OnActiveSec = 0;
+    timerConfig.OnUnitActiveSec = 3600;
+  };
+}