about summary refs log tree commit diff
diff options
context:
space:
mode:
-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;
+  };
+}