summary refs log tree commit diff
path: root/modules/software-templates/synapse-workers/generic.nix
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2025-02-18 11:18:56 +0100
committerRory& <root@rory.gay>2025-02-18 11:18:56 +0100
commit85f5ba751b5a922f7069e8f213b5c5b6f2e192df (patch)
tree614e9ca7e97527cc421a55945cdefbf4dc0a084c /modules/software-templates/synapse-workers/generic.nix
parentSynapse work (diff)
downloadRory-Open-Architecture-85f5ba751b5a922f7069e8f213b5c5b6f2e192df.tar.xz
Synapse work
Diffstat (limited to 'modules/software-templates/synapse-workers/generic.nix')
-rw-r--r--modules/software-templates/synapse-workers/generic.nix62
1 files changed, 42 insertions, 20 deletions
diff --git a/modules/software-templates/synapse-workers/generic.nix b/modules/software-templates/synapse-workers/generic.nix

index 5e540b3..d524baf 100644 --- a/modules/software-templates/synapse-workers/generic.nix +++ b/modules/software-templates/synapse-workers/generic.nix
@@ -1,18 +1,25 @@ +{ + workerName, + tasks, + dbOverrides ? { }, + count ? 1, +}: { config, lib, ... }: +#let +# dbGroup = "medium"; +# workerName = "account_data_stream_writer"; +# tasks = [ "stream_account_data" ]; +## workerRoutes = workerLib.workerRoutes.accountData; +# count = 1; +#in let + workerLib = import ./lib.nix; cfg = config.services.matrix-synapse; - workerLib = import ../lib.nix; - dbGroup = "medium"; -# streamWriterType = "account_data"; - workers = lib.range 0 (cfg.accountDataStreamWriters - 1); - workerName = "account_data_stream_writer"; - tasks = [ "stream_account_data" ]; - workerRoutes = workerLib.workerRoutes.accountData; -in -let enabledResources = lib.attrNames workerRoutes; - streamTypes = [] + workers = lib.range 0 count; + streamTypes = + [ ] ++ lib.optional (lib.elem "stream_account_data" tasks) "account_data" ++ lib.optional (lib.elem "stream_presence" tasks) "presence" ++ lib.optional (lib.elem "stream_push_rules" tasks) "push_rules" @@ -20,10 +27,14 @@ let ++ lib.optional (lib.elem "stream_typing" tasks) "typing" ++ lib.optional (lib.elem "stream_receipts" tasks) "receipts" ++ lib.optional (lib.elem "stream_events" tasks) "events"; + + # recursive update list of attrs +# recursiveMerge = list: lib.foldl (a: b: lib.recursiveUpdate a b) (lib.head list) (lib.tail list); +# workerRoutes = recursiveMerge (lib.map (type: workerLib.workerRoutes.${type}) streamTypes); in { config = lib.mkIf (cfg.accountDataStreamWriters > 0) { - monitoring.synapse.workerNames = lib.map (index: "${workerName}-${toString index}") workers; + monitoring.synapse.workerNames = if (count == 1) then [ workerName ] else lib.map (index: "${workerName}-${toString index}") workers; services.matrix-synapse = { settings = { instance_map = lib.listToAttrs ( @@ -35,9 +46,6 @@ in }) workers ); - #stream_writers.${streamWriterType} = lib.map (index: "${workerName}-${toString index}") workers; -# stream_writers = lib.listToA - # map `streams` to `workers` stream_writers = lib.listToAttrs ( lib.map (stream: { name = stream; @@ -75,12 +83,26 @@ in } ]; }) enabledResources; - database = ( - import ../../db.nix { - inherit dbGroup; - workerName = "${workerName}-${toString index}"; - } - ); + database = lib.recursiveUpdate (lib.recursiveUpdate config.services.matrix-synapse.settings.database { + application_name = "matrix-synapse (${config.services.matrix-synapse.settings.server_name}) - ${if workerName == null then throw "synapse/db.nix: workerName unspecified" else workerName}"; + }) dbOverrides; + + #region Media + max_upload_size = lib.mkIf (lib.elem "media_repo" tasks) "512M"; + max_avatar_size = lib.mkIf (lib.elem "media_repo" tasks) "512M"; + max_image_pixels = lib.mkIf (lib.elem "media_repo" tasks) "250M"; + + max_pending_media_uploads = lib.mkIf (lib.elem "media_repo" tasks) 512; + dynamic_thumbnails = lib.mkIf (lib.elem "media_repo" tasks) true; + + prevent_media_downloads_from = lib.mkIf (lib.elem "media_repo" tasks) [ + # none, give me all the media + ]; + enable_authenticated_media = lib.mkIf (lib.elem "media_repo" tasks) false; + + url_preview_enabled = lib.mkIf (lib.elem "media_repo" tasks) true; + max_spider_size = lib.mkIf (lib.elem "media_repo" tasks) "50M"; + #endregion }; }) workers );