summaryrefslogtreecommitdiff
path: root/modules/nixos/matrix/synapse.nix
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2024-02-20 00:53:48 +0300
committerAzat Bahawi <azat@bahawi.net>2024-02-20 00:53:48 +0300
commitd907b7b8f0aecee0f9eba12b09b929d720d07a8d (patch)
tree4f6bbbe605ebf96e1aefbc657dc975208b2436d1 /modules/nixos/matrix/synapse.nix
parentf1dc3ecad357ceb8be34eca91fafca4d2a4f924e (diff)
2024-02-20
Diffstat (limited to 'modules/nixos/matrix/synapse.nix')
-rw-r--r--modules/nixos/matrix/synapse.nix92
1 files changed, 0 insertions, 92 deletions
diff --git a/modules/nixos/matrix/synapse.nix b/modules/nixos/matrix/synapse.nix
deleted file mode 100644
index 02592de..0000000
--- a/modules/nixos/matrix/synapse.nix
+++ /dev/null
@@ -1,92 +0,0 @@
-{
- config,
- lib,
- ...
-}:
-with lib; let
- cfg = config.nixfiles.modules.matrix.synapse;
-in {
- options.nixfiles.modules.matrix.synapse = {
- enable = mkEnableOption "Synapse Matrix server";
-
- domain = mkOption {
- description = "Domain name sans protocol scheme.";
- type = with types; str;
- default = config.networking.domain;
- };
- };
-
- config = let
- bind_address = "127.0.0.1";
- port = 8448;
- in
- mkIf cfg.enable {
- ark.directories = ["/var/lib/matrix-synapse"];
-
- nixfiles.modules = {
- nginx = {
- enable = true;
- upstreams.synapse.servers."${bind_address}:${toString port}" = {};
- virtualHosts.${cfg.domain}.locations = {
- "~ ^(/_matrix|/_synapse/client)".proxyPass = "http://synapse";
- "= /.well-known/matrix/server" = {
- extraConfig = ''
- add_header Content-Type application/json;
- '';
- return = "200 '${generators.toJSON {} {
- "m.server" = "${cfg.domain}:443";
- }}'";
- };
- "= /.well-known/matrix/client" = {
- extraConfig = ''
- add_header Content-Type application/json;
- add_header Access-Control-Allow-Origin *;
- '';
- return = "200 '${generators.toJSON {} {
- "m.homeserver".base_url = "https://${cfg.domain}";
- }}'";
- };
- };
- };
- postgresql.enable = true;
- };
-
- services = let
- db = "synapse";
- in {
- matrix-synapse = {
- enable = true;
- server_name = config.networking.domain;
-
- database_type = "psycopg2";
- database_name = db;
- database_user = db;
-
- listeners = [
- {
- inherit bind_address port;
- type = "http";
- tls = false;
- x_forwarded = true;
- resources = [
- {
- names = ["client" "federation"];
- compress = false;
- }
- ];
- }
- ];
- };
-
- postgresql = {
- ensureDatabases = [db];
- ensureUsers = [
- {
- name = db;
- ensureDBOwnership = true;
- }
- ];
- };
- };
- };
-}