summary refs log tree commit diff
path: root/modules/software-templates/synapse-workers/single/user-dir.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/software-templates/synapse-workers/single/user-dir.nix')
-rw-r--r--modules/software-templates/synapse-workers/single/user-dir.nix77
1 files changed, 77 insertions, 0 deletions
diff --git a/modules/software-templates/synapse-workers/single/user-dir.nix b/modules/software-templates/synapse-workers/single/user-dir.nix
new file mode 100644

index 0000000..97ddf26 --- /dev/null +++ b/modules/software-templates/synapse-workers/single/user-dir.nix
@@ -0,0 +1,77 @@ +{ config, lib, ... }: + +let + cfg = config.services.matrix-synapse; + workerLib = import ../lib.nix; + dbGroup = "small"; + workerName = "user_dir"; + tasks = [ "user_directory" ]; + workerRoutes = workerLib.workerRoutes.userDirectory; + enabledResources = lib.attrNames workerRoutes; +in +{ + config = lib.mkIf (lib.length tasks > 0) { + monitoring.synapse.workerNames = [ workerName ]; + services.matrix-synapse = { + settings = { + instance_map = { + ${workerName} = { + path = "/run/matrix-synapse/${workerName}.sock"; + }; + }; + + run_background_tasks_on = lib.mkIf (lib.elem "background" tasks) workerName; + notify_appservices_from_worker = lib.mkIf (lib.elem "appservice" tasks) workerName; + update_user_directory_from_worker = lib.mkIf (lib.elem "user_directory" tasks) workerName; + }; + + workers = { + ${workerName} = { + worker_app = "synapse.app.generic_worker"; + worker_listeners = + [ + { + type = "http"; + path = "/run/matrix-synapse/${workerName}.sock"; + resources = [ + { + names = [ "replication" ]; + compress = false; + } + ]; + } + ] + ++ lib.map (type: { + type = "http"; + path = "/run/matrix-synapse/${workerName}-${type}.sock"; + mode = "666"; + resources = [ + { + names = [ type ]; + compress = false; + } + ]; + }) enabledResources; + + database = (import ../../db.nix { inherit workerName dbGroup; }); + }; + }; + }; + + services.nginx = { + virtualHosts."${cfg.nginxVirtualHostName}".locations = lib.listToAttrs ( + lib.flatten ( + lib.forEach enabledResources ( + type: + lib.map (route: { + name = route; + value = { + proxyPass = "http://unix:/run/matrix-synapse/${workerName}-${type}.sock"; + }; + }) workerRoutes.${type} + ) + ) + ); + }; + }; +}