diff options
Diffstat (limited to 'os/kay/modules/matrix')
-rw-r--r-- | os/kay/modules/matrix/default.nix | 22 | ||||
-rw-r--r-- | os/kay/modules/matrix/dendrite.nix | 109 | ||||
-rw-r--r-- | os/kay/modules/matrix/matrix-sliding-sync.nix | 123 |
3 files changed, 0 insertions, 254 deletions
diff --git a/os/kay/modules/matrix/default.nix b/os/kay/modules/matrix/default.nix deleted file mode 100644 index 1b9564d..0000000 --- a/os/kay/modules/matrix/default.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ config, ... }: -let - domain = config.global.userdata.domain; -in -{ - imports = [ - ./dendrite.nix - ./matrix-sliding-sync.nix - ]; - - sops.secrets."matrix-${domain}/sliding_sync" = { }; - - services.matrix-sliding-sync-dirty = { - enable = true; - environmentFile = config.sops.secrets."matrix-${domain}/sliding_sync".path; - - settings = { - SYNCV3_LOG_LEVEL = "warn"; - SYNCV3_SERVER = "http://127.0.0.1:${toString config.services.dendrite.httpPort}"; - }; - }; -} diff --git a/os/kay/modules/matrix/dendrite.nix b/os/kay/modules/matrix/dendrite.nix deleted file mode 100644 index e66c5a5..0000000 --- a/os/kay/modules/matrix/dendrite.nix +++ /dev/null @@ -1,109 +0,0 @@ -{ config, ... }: - -let - domain = config.global.userdata.domain; - database = { - connection_string = "postgres:///dendrite?host=/run/postgresql"; - max_open_conns = 90; - max_idle_conns = 5; - conn_max_lifetime = -1; - }; -in -{ - sops.secrets."matrix-${domain}/key" = { }; - systemd.services.dendrite.after = [ "postgresql.service" ]; - - services = { - postgresql = { - ensureDatabases = [ "dendrite" ]; - ensureUsers = [ - { - name = "dendrite"; - ensureDBOwnership = true; - } - ]; - }; - - dendrite = { - enable = true; - loadCredential = [ - "private_key:${config.sops.secrets."matrix-${domain}/key".path}" - ]; - - settings = { - sync_api.search = { - enabled = true; - index_path = "/var/lib/dendrite/searchindex"; - }; - global = { - metrics.enabled = true; - server_name = domain; - private_key = "$CREDENTIALS_DIRECTORY/private_key"; - trusted_third_party_id_servers = [ - "matrix.org" - "vector.im" - ]; - inherit database; - }; - logging = [ - { - type = "std"; - level = "warn"; - } - ]; - mscs = { - inherit database; - mscs = [ "msc2836" ]; - }; - sync_api = { - inherit database; - real_ip_header = "X-Real-IP"; - }; - media_api = { - inherit database; - dynamic_thumbnails = true; - max_file_size_bytes = 12800000000; - }; - federation_api = { - inherit database; - send_max_retries = 8; - key_perspectives = [ - { - server_name = "matrix.org"; - keys = [ - { - key_id = "ed25519:auto"; - public_key = "Noi6WqcDj0QmPxCNQqgezwTlBKrfqehY1u2FyWP9uYw"; - } - { - key_id = "ed25519:a_RXGa"; - public_key = "l8Hft5qXKn1vfHrg3p4+W8gELQVo8N13JkluMfmn2sQ"; - } - ]; - } - ]; - }; - - app_service_api = { - inherit database; - }; - room_server = { - inherit database; - }; - push_server = { - inherit database; - }; - relay_api = { - inherit database; - }; - key_server = { - inherit database; - }; - user_api = { - account_database = database; - device_database = database; - }; - }; - }; - }; -} diff --git a/os/kay/modules/matrix/matrix-sliding-sync.nix b/os/kay/modules/matrix/matrix-sliding-sync.nix deleted file mode 100644 index 63d95ad..0000000 --- a/os/kay/modules/matrix/matrix-sliding-sync.nix +++ /dev/null @@ -1,123 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: - -let - cfg = config.services.matrix-sliding-sync-dirty; - matrix-sliding-sync = pkgs.callPackage ../../pkgs/matrix-sliding-sync.nix { }; -in -{ - imports = [ - (lib.mkRenamedOptionModule - [ "services" "matrix-synapse" "sliding-sync" ] - [ "services" "matrix-sliding-sync" ] - ) - ]; - - options.services.matrix-sliding-sync-dirty = { - enable = lib.mkEnableOption "sliding sync"; - - settings = lib.mkOption { - type = lib.types.submodule { - freeformType = with lib.types; attrsOf str; - options = { - SYNCV3_SERVER = lib.mkOption { - type = lib.types.str; - description = '' - The destination homeserver to talk to not including `/_matrix/` e.g `https://matrix.example.org`. - ''; - }; - - SYNCV3_DB = lib.mkOption { - type = lib.types.str; - default = "postgresql:///matrix-sliding-sync?host=/run/postgresql"; - description = '' - The postgres connection string. - Refer to <https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING>. - ''; - }; - - SYNCV3_BINDADDR = lib.mkOption { - type = lib.types.str; - default = "127.0.0.1:8009"; - example = "[::]:8008"; - description = "The interface and port or path (for unix socket) to listen on."; - }; - - SYNCV3_LOG_LEVEL = lib.mkOption { - type = lib.types.enum [ - "trace" - "debug" - "info" - "warn" - "error" - "fatal" - ]; - default = "info"; - description = "The level of verbosity for messages logged."; - }; - }; - }; - default = { }; - description = '' - Freeform environment variables passed to the sliding sync proxy. - Refer to <https://github.com/matrix-org/sliding-sync#setup> for all supported values. - ''; - }; - - createDatabase = lib.mkOption { - type = lib.types.bool; - default = true; - description = '' - Whether to enable and configure `services.postgres` to ensure that the database user `matrix-sliding-sync` - and the database `matrix-sliding-sync` exist. - ''; - }; - - environmentFile = lib.mkOption { - type = lib.types.str; - description = '' - Environment file as defined in {manpage}`systemd.exec(5)`. - - This must contain the {env}`SYNCV3_SECRET` variable which should - be generated with {command}`openssl rand -hex 32`. - ''; - }; - }; - - config = lib.mkIf cfg.enable { - services.postgresql = lib.optionalAttrs cfg.createDatabase { - enable = true; - ensureDatabases = [ "matrix-sliding-sync" ]; - ensureUsers = [ - { - name = "matrix-sliding-sync"; - ensureDBOwnership = true; - } - ]; - }; - - systemd.services.matrix-sliding-sync = rec { - after = - lib.optional cfg.createDatabase "postgresql.service" - ++ lib.optional config.services.dendrite.enable "dendrite.service" - ++ lib.optional config.services.matrix-synapse.enable config.services.matrix-synapse.serviceUnit; - wants = after; - wantedBy = [ "multi-user.target" ]; - environment = cfg.settings; - serviceConfig = { - DynamicUser = true; - EnvironmentFile = cfg.environmentFile; - ExecStart = lib.getExe matrix-sliding-sync; - StateDirectory = "matrix-sliding-sync"; - WorkingDirectory = "%S/matrix-sliding-sync"; - RuntimeDirectory = "matrix-sliding-sync"; - Restart = "on-failure"; - RestartSec = "1s"; - }; - }; - }; -} |