about summary refs log tree commit diff
path: root/ops/modules/gerrit-queue.nix
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-12-09T13·45+0300
committerVincent Ambo <mail@tazj.in>2021-12-10T07·32+0300
commit4870b1a2ff8cec7f7e0ce9be1cb25e0ba463e3d3 (patch)
treec7b18cf04cb71459ed9058f8015626e478e6e8df /ops/modules/gerrit-queue.nix
parenta9dd719e7cc517c929ccc73e1ebad8c06596da64 (diff)
feat(ops/modules): Add module for running gerrit-queue r/3172
This is not yet including the secret configuration for gerrit-queue,
and just expects the secret (gerrit username & password) to be
available in /etc/secrets.

Change-Id: Ia465ef7f3f521c70d606d7fdeba9aa83c7e1b98b
Diffstat (limited to 'ops/modules/gerrit-queue.nix')
-rw-r--r--ops/modules/gerrit-queue.nix51
1 files changed, 51 insertions, 0 deletions
diff --git a/ops/modules/gerrit-queue.nix b/ops/modules/gerrit-queue.nix
new file mode 100644
index 000000000000..a4b073f8560b
--- /dev/null
+++ b/ops/modules/gerrit-queue.nix
@@ -0,0 +1,51 @@
+# Configuration for the Gerrit autosubmit bot (//third_party/gerrit-queue)
+{ depot, pkgs, config, lib, ... }:
+
+let
+  cfg = config.services.depot.gerrit-queue;
+  description = "gerrit-queue - autosubmit bot for Gerrit";
+  mkStringOption = default: lib.mkOption {
+    inherit default;
+    type = lib.types.str;
+  };
+in {
+  options.services.depot.gerrit-queue = {
+    enable = lib.mkEnableOption description;
+    gerritUrl = mkStringOption "https://cl.tvl.fyi";
+    gerritProject = mkStringOption "depot";
+    gerritBranch = mkStringOption "canon";
+
+    interval = with lib; mkOption {
+      type = types.int;
+      default = 60;
+      description = "Interval (in seconds) for submit queue checks";
+    };
+
+    secretsFile = with lib; mkOption {
+      description = "Path to a systemd EnvironmentFile containing secrets";
+      default = "/run/agenix/gerrit-queue";
+      type = types.str;
+    };
+  };
+
+  config = lib.mkIf cfg.enable {
+    systemd.services.gerrit-queue = {
+      inherit description;
+      wantedBy = [ "multi-user.target" ];
+
+      serviceConfig = {
+        ExecStart = "${depot.third_party.gerrit-queue}/bin/gerrit-queue";
+        DynamicUser = true;
+        Restart = "always";
+        EnvironmentFile = cfg.secretsFile;
+      };
+
+      environment = {
+        GERRIT_URL = cfg.gerritUrl;
+        GERRIT_PROJECT = cfg.gerritProject;
+        GERRIT_BRANCH = cfg.gerritBranch;
+        SUBMIT_QUEUE_TRIGGER_INTERVAL = toString cfg.interval;
+      };
+    };
+  };
+}