{ config, service_configs, lib, ... }: { imports = [ (lib.serviceMountWithZpool "continuwuity" service_configs.zpool_ssds [ "/var/lib/private/continuwuity" ]) ]; services.matrix-continuwuity = { enable = true; settings.global = { port = [ service_configs.ports.matrix ]; server_name = service_configs.https.domain; allow_registration = true; registration_token_file = ../secrets/matrix_reg_token; new_user_displayname_suffix = ""; trusted_servers = [ "matrix.org" "constellatory.net" "tchncs.de" "envs.net" ]; address = [ "0.0.0.0" ]; # TURN server config (coturn) turn_secret = config.services.coturn.static-auth-secret; turn_uris = [ "turn:${service_configs.https.domain}?transport=udp" "turn:${service_configs.https.domain}?transport=tcp" ]; turn_ttl = 86400; }; }; services.caddy.virtualHosts.${service_configs.https.domain}.extraConfig = lib.mkBefore '' header /.well-known/matrix/* Content-Type application/json header /.well-known/matrix/* Access-Control-Allow-Origin * respond /.well-known/matrix/server `{"m.server": "${service_configs.matrix.domain}:${builtins.toString service_configs.ports.https}"}` respond /.well-known/matrix/client `{"m.server":{"base_url":"https://${service_configs.matrix.domain}"},"m.homeserver":{"base_url":"https://${service_configs.matrix.domain}"},"org.matrix.msc3575.proxy":{"base_url":"https://${config.services.matrix-continuwuity.settings.global.server_name}"}}` ''; services.caddy.virtualHosts."${service_configs.matrix.domain}".extraConfig = '' reverse_proxy :${builtins.toString service_configs.ports.matrix} ''; # Exact duplicate for federation port services.caddy.virtualHosts."${service_configs.matrix.domain}:${builtins.toString service_configs.ports.matrix_federation}".extraConfig = config.services.caddy.virtualHosts."${service_configs.matrix.domain}".extraConfig; systemd.tmpfiles.rules = [ "Z /var/lib/private/continuwuity 0770 ${config.services.matrix-continuwuity.user} ${config.services.matrix-continuwuity.group}" ]; # for federation networking.firewall.allowedTCPPorts = [ service_configs.ports.matrix_federation ]; # for federation networking.firewall.allowedUDPPorts = [ service_configs.ports.matrix_federation ]; }