beagle: matrix: configure clan states

This commit is contained in:
Pedro Rey Anca 2025-12-06 13:14:26 +01:00
parent 4572f58328
commit 877bf6e204
Signed by: peprolinbot
GPG key ID: 053EA6E00116533A

View file

@ -1,38 +1,77 @@
{ {
config, config,
pkgs, pkgs,
lib,
... ...
}: }:
{ {
services.postgresql = clan.core.postgresql = {
let
databases = [
"matrix-synapse"
"mautrix-signal"
"mautrix-whatsapp"
"mautrix-telegram"
];
in
{
enable = true; enable = true;
ensureDatabases = databases; users = {
# Create a user for each database matrix-synapse = { };
ensureUsers = map (id: { mautrix-signal = { };
name = id; mautrix-whatsapp = { };
ensureDBOwnership = true; mautrix-telegram = { };
}) databases; };
initialScript = pkgs.writeText "backend-initScript" '' databases = {
CREATE ROLE "matrix-synapse" WITH LOGIN; matrix-synapse = {
CREATE DATABASE "matrix-synapse" create.options = {
WITH ENCODING = 'UTF8' ENCODING = "UTF8";
TEMPLATE = template0 TEMPLATE = "template0";
OWNER = "matrix-synapse" OWNER = "matrix-synapse";
LC_COLLATE = 'C' LC_COLLATE = "C";
LC_CTYPE = 'C'; LC_CTYPE = "C";
};
restore.stopOnRestore = [ "matrix-synapse" ];
};
mautrix-signal = {
restore.stopOnRestore = [ "mautrix-signal" ];
};
mautrix-whatsapp = {
restore.stopOnRestore = [ "mautrix-whatsapp" ];
};
mautrix-telegram = {
restore.stopOnRestore = [ "mautrix-telegram" ];
};
};
};
clan.core.state.matrix = {
folders = [ "/var/backup/matrix-synapse" ];
preBackupScript = ''
export PATH=${
lib.makeBinPath [
pkgs.coreutils
pkgs.rsync
]
}
mkdir -p /var/backup/matrix-synapse
rsync -avH --delete --numeric-ids --include='homeserver.signing.key' --include='media_store' --exclude='media_store/remote_*' --exclude='media_store/url_cache*' /var/lib/matrix-synapse /var/backup/matrix-synapse/
''; '';
postRestoreScript = ''
export PATH=${
lib.makeBinPath [
config.systemd.package
pkgs.coreutils
pkgs.rsync
]
}
service_status="$(systemctl is-active matrix-synapse)"
systemctl stop matrix-synapse
rsync -avH --delete --numeric-ids /var/backup/matrix-synapse/ /var/lib/matrix-synapse/
if [ "$service_status" = "active" ]; then
systemctl start matrix-synapse
fi
'';
}; };
services.matrix-synapse = { services.matrix-synapse = {