Beginnings of matrix homeserver

This commit is contained in:
Jurn Wubben 2025-05-25 11:15:53 +02:00
parent 0c179c137d
commit fd9edd1b2f
8 changed files with 79 additions and 7 deletions

View file

@ -1,4 +1,4 @@
{lib, ...}: {
imports = [./caddy.nix ./transfer-sh.nix ./seafile.nix ./bot.nix ./immich.nix];
imports = [./caddy.nix ./transfer-sh.nix ./seafile.nix ./bot.nix ./immich.nix ./matrix.nix];
options.niksos.server = lib.mkEnableOption "server servcies (such as caddy)."; #TODO: per service option.
}

64
system/server/matrix.nix Normal file
View file

@ -0,0 +1,64 @@
{
config,
lib,
...
}: let
database = {
connection_string = "postgres:///dendrite?host=/run/postgresql";
max_open_conns = 97;
max_idle_conns = 5;
conn_max_lifetime = -1;
};
in {
config = lib.mkIf config.niksos.server {
services = {
dendrite = {
enable = true;
httpPort = 9003;
settings = {
global = {
server_name = "matrix.jsw.tf";
private_key = "/$CREDENTIALS_DIRECTORY/matrix-server-key"; #nix shell nixpkgs#dendrite; generate-keys --private-key matrix_key.pem
};
global.database = database;
app_service_api.database = database;
federation_api.database = database;
key_server.database = database;
media_api.database = database;
mscs.database = database;
relay_api.database = database;
room_server.database = database;
sync_api.database = database;
user_api.account_database.database = database;
user_api.device_database.database = database;
sync_api.search.enabled = true;
};
};
postgresql = {
enable = true;
enableTCPIP = false;
ensureDatabases = ["dendrite"];
ensureUsers = [
{
name = "dendrite";
ensureDBOwnership = true;
}
];
};
caddy.virtualHosts."matrix.jsw.tf".extraConfig = ''
reverse_proxy /_matrix/* localhost:9003
'';
};
systemd.services.dendrite = {
serviceConfig.LoadCredential = [
# $ nix-shell -p dendrite --run 'generate-keys --private-key /tmp/key'
"matrix-server-key:${config.age.secrets.matrix-priv.path}"
];
after = ["postgresql.service"];
};
};
}