feat(ops/modules): launch teleirc for Volga Sprint

For the duration of the sprint, this bot will take care of
synchronising the IRC channel with the Telegram group.

After the sprint, it will be removed again.

Change-Id: I6d5b1316fc85ddd26adf55e31f6bff742907fc24
Reviewed-on: https://cl.tvl.fyi/c/depot/+/11727
Reviewed-by: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
This commit is contained in:
Vincent Ambo 2024-05-26 21:54:55 +03:00 committed by tazjin
parent 73092db85a
commit 61cf4905fe
4 changed files with 49 additions and 0 deletions

View file

@ -25,6 +25,7 @@ in
(mod "restic.nix")
(mod "smtprelay.nix")
(mod "sourcegraph.nix")
(mod "teleirc.nix")
(mod "tvl-buildkite.nix")
(mod "tvl-slapd/default.nix")
(mod "tvl-users.nix")
@ -232,6 +233,7 @@ in
owothia.file = secretFile "owothia";
panettone.file = secretFile "panettone";
smtprelay.file = secretFile "smtprelay";
teleirc.file = secretFile "teleirc";
buildkite-agent-token = {
file = secretFile "buildkite-agent-token";
@ -410,6 +412,9 @@ in
};
};
# Run the Telegram<>IRC bridge for Volga Sprint.
teleirc.enable = true;
# Run atward, the search engine redirection thing.
atward.enable = true;

40
ops/modules/teleirc.nix Normal file
View file

@ -0,0 +1,40 @@
# Run the Telegram<>IRC sync bot for the Volga Sprint channel.
#
# This module is written in a pretty ad-hoc style, as it is sort of a
# throwaway thing (will be removed again after the event).
{ depot, config, lib, pkgs, ... }:
let
cfg = config.services.depot.owothia;
description = "IRC<>Telegram sync for Volga Sprint channel";
configFile = builtins.toFile "teleirc.env" ''
# connect through tvlbot's ZNC bouncer
IRC_SERVER="localhost"
IRC_PORT=2627
IRC_USE_SSL=false
IRC_CHANNEL="#volgasprint"
IRC_BLACKLIST="tvlbot"
IRC_BOT_NAME="tvlbot"
IRC_BOT_REALNAME="TVL bot for Volga Sprint"
IRC_BOT_IDENT="tvlbot"
IRC_SEND_STICKER_EMOJI=false # look into this
TELEGRAM_CHAT_ID=-1002153072030
'';
in
{
options.services.depot.teleirc.enable = lib.mkEnableOption description;
config = lib.mkIf cfg.enable {
systemd.services.teleirc = {
inherit description;
wantedBy = [ "multi-user.target" ];
serviceConfig = {
DynamicUser = true;
Restart = "always";
EnvironmentFile = "/run/agenix/teleirc";
ExecStart = "${depot.third_party.teleirc}/bin/teleirc -conf ${configFile}";
};
};
};
}

View file

@ -9,6 +9,9 @@ let
# zamalek
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBRXeb8EuecLHP0bW4zuebXp4KRnXgJTZfeVWXQ1n1R"
# khamovnik
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID1ptE5HvGSXxSXo+aHBTKa5PBlAM1HqmpzWz0yAhHLj"
];
aspen = [
@ -47,6 +50,7 @@ in
"owothia.age" = whitbyDefault;
"panettone.age" = whitbyDefault;
"smtprelay.age" = whitbyDefault;
"teleirc.age" = whitbyDefault;
"tf-buildkite.age" = terraform;
"tf-glesys.age" = terraform;
"tf-keycloak.age" = terraform;

BIN
ops/secrets/teleirc.age Normal file

Binary file not shown.