nix/nixos/services/mautrix/signal.nix

63 lines
1.8 KiB
Nix

{
config,
lib,
...
}: let
inherit (import ./lib.nix) toAppRegistration;
inherit (config.sops) templates placeholder;
in {
virtualisation.oci-containers.containers.mautrix-signal = {
image = "dock.mau.dev/mautrix/signal:v25.10";
dependsOn = ["mautrix-signal-psql"];
volumes = [
"/home/tristan/pods/signal-bridge/mautrix-signal:/data:z"
];
ports = [
"29328:29328"
"8000:8000"
];
};
# when you get around to backing this up
# 1. stop the server.
# 2. backup the db.
# 3. migrate to newer version of postgres
# 4. migrate db to local
virtualisation.oci-containers.containers.mautrix-signal-psql = {
image = "docker.io/postgres:14-alpine";
ports = ["5435:5432"];
volumes = ["/home/tristan/pods/signal-bridge/db:/var/lib/postgresql/data"];
environmentFiles = [templates."mautrix-signal/psql.env".path];
};
sops.templates = {
"mautrix-signal/psql.env" = {
owner = config.users.users.nobody.name;
content = lib.strings.toShellVars {
POSTGRES_PASSWORD = placeholder."mautrix-signal/postgres_password";
POSTGRES_USER = "signald";
POSTGRES_DB = "signald";
};
};
};
sops.secrets = {
"mautrix-signal/postgres_password" = {};
"mautrix-signal/as_token" = {};
"mautrix-signal/hs_token" = {};
};
sops.templates = {
"mautrix-signal/appservice.yaml" = {
owner = "matrix-synapse";
content = toAppRegistration {
id = "signal";
port = 29328;
as_token = placeholder."mautrix-signal/as_token";
hs_token = placeholder."mautrix-signal/hs_token";
sender_localpart = "Gx8tLTHsxVlrdD3qibaPdaP9t7GhfciV";
"de.sorunome.msc2409.push_ephemeral" = true;
};
};
};
services.matrix-synapse.settings.app_service_config_files = [
templates."mautrix-signal/appservice.yaml".path
];
}