feat(conduit): Refactor matrix appservices and add matrix-hookshot
This commit is contained in:
parent
e11b6f810b
commit
c939b935bf
9 changed files with 313 additions and 91 deletions
configuration/services/conduit
67
configuration/services/conduit/lib.nix
Normal file
67
configuration/services/conduit/lib.nix
Normal file
|
@ -0,0 +1,67 @@
|
|||
{
|
||||
lib,
|
||||
writeShellScript,
|
||||
formats,
|
||||
replace-secret,
|
||||
}:
|
||||
let
|
||||
replaceSecretBin = "${lib.getExe replace-secret}";
|
||||
in
|
||||
{
|
||||
# Write a script that will set up the service's registration.yaml
|
||||
# with secrets from systemd credentials.
|
||||
#
|
||||
# The credentials should be named `${id}_as-token` and
|
||||
# `${id}_hs-token`.
|
||||
#
|
||||
# This registration file needs to be manually added to conduit by
|
||||
# messaging the admin with the yaml file.
|
||||
#
|
||||
# TODO(tlater): Conduwuit seems to support a CLI interface for this,
|
||||
# may want to migrate to that sometime.
|
||||
writeRegistrationScript =
|
||||
{
|
||||
id, # Must be unique among all registered appservices/bots
|
||||
url, # The URL on which the service listens
|
||||
sender_localpart,
|
||||
rate_limited ? false,
|
||||
namespaces ? {
|
||||
aliases = [ ];
|
||||
rooms = [ ];
|
||||
users = [ ];
|
||||
},
|
||||
extraSettings ? { },
|
||||
# The location to place the file; assumes systemd runtime dir
|
||||
runtimeRegistration ? "$RUNTIME_DIRECTORY/${id}-registration.yaml",
|
||||
}:
|
||||
let
|
||||
registrationFile = (formats.yaml { }).generate "${id}-registration.yaml" (
|
||||
{
|
||||
inherit
|
||||
id
|
||||
url
|
||||
sender_localpart
|
||||
rate_limited
|
||||
namespaces
|
||||
;
|
||||
|
||||
as_token = "@AS_TOKEN@";
|
||||
hs_token = "@HS_TOKEN@";
|
||||
}
|
||||
// extraSettings
|
||||
);
|
||||
in
|
||||
{
|
||||
inherit runtimeRegistration;
|
||||
ExecStartPre = writeShellScript "${id}-registration-setup.sh" ''
|
||||
cp -f ${registrationFile} "${runtimeRegistration}"
|
||||
chmod 600 "${runtimeRegistration}"
|
||||
|
||||
# Write actual secrets into config
|
||||
${replaceSecretBin} '@AS_TOKEN@' "$CREDENTIALS_DIRECTORY/${id}_as-token" "${runtimeRegistration}"
|
||||
${replaceSecretBin} '@HS_TOKEN@' "$CREDENTIALS_DIRECTORY/${id}_hs-token" "${runtimeRegistration}"
|
||||
|
||||
chmod 400 "${runtimeRegistration}"
|
||||
'';
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue