diff --git a/hosts/fw/modules/web/default.nix b/hosts/fw/modules/web/default.nix index edd85ee..fe1175b 100644 --- a/hosts/fw/modules/web/default.nix +++ b/hosts/fw/modules/web/default.nix @@ -91,7 +91,6 @@ in "/var/lib/zammad" "/var/lib/postgresql" "/var/lib/n8n" - "/var/lib/mas" "/var/lib/matrix-synapse" "/var/lib/mautrix-whatsapp" "/var/lib/mautrix-signal" @@ -104,7 +103,6 @@ in environment.systemPackages = with pkgs; [ vim # my preferred editor - matrix-authentication-service # mas-cli for migration ]; networking.hostName = hostname; diff --git a/hosts/fw/modules/web/matrix.nix b/hosts/fw/modules/web/matrix.nix index 475bab1..6277c2b 100644 --- a/hosts/fw/modules/web/matrix.nix +++ b/hosts/fw/modules/web/matrix.nix @@ -3,180 +3,42 @@ let hostname = "matrix"; fqdn = "${hostname}.cloonar.com"; baseUrl = "https://${fqdn}"; - clientConfig = { - "m.homeserver".base_url = baseUrl; - # MAS auth issuer discovery (MSC2965) - "org.matrix.msc2965.authentication" = { - issuer = baseUrl + "/"; - account = baseUrl + "/account"; - }; - }; + clientConfig."m.homeserver".base_url = baseUrl; serverConfig."m.server" = "${fqdn}:443"; mkWellKnown = data: '' default_type application/json; add_header Access-Control-Allow-Origin *; return 200 '${builtins.toJSON data}'; ''; - - masUpstreamId = "01KJPRKN397E5N8D0CA2Z3TJ7Y"; - elementWebClientId = "01KJPVT5D54NRAY7AJY6PZEN0D"; - masPackage = pkgs.matrix-authentication-service; - - synapseMasConfig = pkgs.writeText "synapse-mas-config.yaml" '' - matrix_authentication_service: - enabled: true - endpoint: "http://127.0.0.1:8081" - secret_path: ${config.sops.secrets.mas-matrix-secret-synapse.path} - ''; in { - # Secrets for MAS - sops.secrets.mas-encryption-key = { owner = "mas"; }; - sops.secrets.mas-matrix-secret = { owner = "mas"; }; - sops.secrets.mas-authelia-client-secret = { owner = "mas"; }; - sops.secrets.mas-rsa-key = { owner = "mas"; }; - # Synapse also needs the shared secret - sops.secrets.mas-matrix-secret-synapse = { + # Secrets for Synapse + sops.secrets.synapse-oidc-client-secret = { owner = "matrix-synapse"; - key = "mas-matrix-secret"; }; - sops.secrets.mautrix-whatsapp-env = { }; sops.secrets.mautrix-signal-env = { }; sops.secrets.mautrix-discord-env = { }; - # MAS system user - users.users.mas = { - isSystemUser = true; - group = "mas"; - home = "/var/lib/mas"; - }; - users.groups.mas = { }; - - # PostgreSQL databases for Synapse and MAS + # PostgreSQL database for Synapse services.postgresql = { enable = true; # Synapse requires C locale for correct collation behavior initdbArgs = [ "--lc-collate=C" "--lc-ctype=C" ]; - ensureDatabases = [ "matrix-synapse" "mas" ]; + ensureDatabases = [ "matrix-synapse" ]; ensureUsers = [ { name = "matrix-synapse"; ensureDBOwnership = true; } - { - name = "mas"; - ensureDBOwnership = true; - } ]; }; services.postgresqlBackup.enable = true; - services.postgresqlBackup.databases = [ "matrix-synapse" "mas" ]; - - # Matrix Authentication Service (MAS) - systemd.services.matrix-authentication-service = { - description = "Matrix Authentication Service"; - after = [ "postgresql.service" "network.target" ]; - before = [ "matrix-synapse.service" ]; - wantedBy = [ "multi-user.target" ]; - - serviceConfig = { - Type = "simple"; - User = "mas"; - Group = "mas"; - RuntimeDirectory = "mas"; - RuntimeDirectoryMode = "0755"; - StateDirectory = "mas"; - StateDirectoryMode = "0750"; - ExecStart = "${masPackage}/bin/mas-cli server --config /run/mas/config.yaml"; - Restart = "on-failure"; - RestartSec = "5s"; - }; - - preStart = '' - # Read secrets from SOPS-managed files - ENCRYPTION_KEY=$(cat ${config.sops.secrets.mas-encryption-key.path}) - MATRIX_SECRET=$(cat ${config.sops.secrets.mas-matrix-secret.path}) - CLIENT_SECRET=$(cat ${config.sops.secrets.mas-authelia-client-secret.path}) - - # Write MAS config with secrets interpolated - cat > /run/mas/config.yaml <