summary refs log tree commit diff
path: root/host/Rory-nginx/services/matrix/synapse/workers/stream-writers/module.nix
diff options
context:
space:
mode:
Diffstat (limited to 'host/Rory-nginx/services/matrix/synapse/workers/stream-writers/module.nix')
-rw-r--r--host/Rory-nginx/services/matrix/synapse/workers/stream-writers/module.nix72
1 files changed, 72 insertions, 0 deletions
diff --git a/host/Rory-nginx/services/matrix/synapse/workers/stream-writers/module.nix b/host/Rory-nginx/services/matrix/synapse/workers/stream-writers/module.nix
new file mode 100644
index 0000000..4f661b9
--- /dev/null
+++ b/host/Rory-nginx/services/matrix/synapse/workers/stream-writers/module.nix
@@ -0,0 +1,72 @@
+{ config, pkgs, lib, ... }:
+let
+  cfg = config.services.matrix-synapse;
+  #eventWriters = lib.range 0 (count - 1);
+  #typingWriters = lib.range 0 (count - 1);
+  #deviceWriters = lib.range 0 (count - 1);
+  #accountDataWriters = lib.range 0 (count - 1);
+  #receiptsWriters = lib.range 0 (count - 1);
+  #presenceWriters = lib.range 0 (count - 1);
+  #pusherWriters = lib.range 0 (count - 1);
+in
+{
+  options.services.matrix-synapse = lib.listToAttrs (lib.map (option: {
+        name = "${option}StreamWriters";
+        value = lib.mkOption {
+          type = lib.types.int;
+          default = 1;
+          description = "Number of writers for ${option} streams";
+        };
+      }) [
+        "event"
+        "typing"
+        "toDevice"
+        "accountData"
+        "receipts"
+        "presence"
+        "pushRule"
+      ]) // {
+        enableStreamWriters = lib.mkEnableOption "Enable stream writers";
+        federationSenders = lib.mkOption {
+          type = lib.types.int;
+          default = 1;
+          description = "Number of federation senders";
+        };
+        pushers = lib.mkOption {
+          type = lib.types.int;
+          default = 1;
+          description = "Number of pushers";
+        };
+      };
+
+  config = lib.mkIf cfg.enableStreamWriters {
+    services.matrix-synapse = {
+      settings = {
+        instance_map = lib.listToAttrs (lib.map (port: {
+          name = "stream-writer-${toString port}";
+          value = {
+            path = "/run/synapse/stream-writer-${toString port}.sock";
+          };
+        }) federationSenders);
+
+        stream_writers = {
+          events = lib.map (port: "stream-writer-events-${toString port}") federationSenders;
+          typing = lib.map (port: "stream-writer-typing-${toString port}") typingWriters;
+          to_device = lib.map (port: "stream-writer-to_device-${toString port}") deviceWriters;
+          account_data = lib.map (port: "stream-writer-account_data-${toString port}") accountDataWriters;
+          receipts = lib.map (port: "stream-writer-receipts-${toString port}") receiptsWriters;
+          presence = lib.map (port: "stream-writer-presence-${toString port}") presenceWriters;
+          push_rules = lib.map (port: "stream-writer-push_rules-${toString port}") pusherWriters;
+        };
+      };
+
+      workers = lib.listToAttrs (lib.map (port: {
+        name = "stream-writerr-${toString port}";
+        value = {
+          worker_app = "synapse.app.generic_worker";
+          worker_listeners = [ ];
+        };
+      }) federationSenders);
+    };
+  };
+}
\ No newline at end of file