diff options
Diffstat (limited to 'ops/nixos/clbot.nix')
-rw-r--r-- | ops/nixos/clbot.nix | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/ops/nixos/clbot.nix b/ops/nixos/clbot.nix deleted file mode 100644 index ad33e25a4d54..000000000000 --- a/ops/nixos/clbot.nix +++ /dev/null @@ -1,75 +0,0 @@ -# Module that configures CLBot, our Gerrit->IRC info bridge. -{ depot, config, lib, pkgs, ... }: - -let - inherit (builtins) attrValues concatStringsSep mapAttrs readFile; - inherit (pkgs) runCommandNoCC; - - inherit (lib) - listToAttrs - mkEnableOption - mkIf - mkOption - removeSuffix - types; - - description = "Bot to forward CL notifications"; - cfg = config.services.depot.clbot; - - mkFlags = flags: - concatStringsSep " " - (attrValues (mapAttrs (key: value: "-${key} \"${toString value}\"") flags)); - - # Escapes a unit name for use in systemd - systemdEscape = name: removeSuffix "\n" (readFile (runCommandNoCC "unit-name" {} '' - ${pkgs.systemd}/bin/systemd-escape '${name}' >> $out - '')); - - mkUnit = flags: channel: { - name = "clbot-${systemdEscape channel}"; - value = { - description = "${description} to ${channel}"; - wantedBy = [ "multi-user.target" ]; - - script = "${depot.fun.clbot}/bin/clbot ${mkFlags (cfg.flags // { - irc_channel = channel; - })} -alsologtostderr"; - - serviceConfig = { - User = "clbot"; - EnvironmentFile = "/etc/secrets/clbot"; - Restart = "always"; - }; - }; - }; -in { - options.services.depot.clbot = { - enable = mkEnableOption description; - - flags = mkOption { - type = types.attrsOf types.str; - description = "Key value pairs for command line flags"; - }; - - channels = mkOption { - type = with types; listOf str; - description = "Channels in which to post (generates one unit per channel)"; - }; - }; - - config = mkIf cfg.enable { - # This does not use DynamicUser because we need to make some files - # (notably the SSH private key) readable by this user outside of - # the module. - users = { - groups.clbot = {}; - - users.clbot = { - group = "clbot"; - isNormalUser = false; - }; - }; - - systemd.services = listToAttrs (map (mkUnit cfg.flags) cfg.channels); - }; -} |