Synapse work
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
);
|