1{ pkgs, ... }: 2{ 3 name = "matrix-synapse-workers"; 4 meta = { 5 inherit (pkgs.matrix-synapse.meta) maintainers; 6 }; 7 8 nodes = { 9 homeserver = 10 { 11 pkgs, 12 nodes, 13 ... 14 }: 15 { 16 services.postgresql = { 17 enable = true; 18 initialScript = pkgs.writeText "synapse-init.sql" '' 19 CREATE ROLE "matrix-synapse" WITH LOGIN PASSWORD 'synapse'; 20 CREATE DATABASE "matrix-synapse" WITH OWNER "matrix-synapse" 21 TEMPLATE template0 22 LC_COLLATE = "C" 23 LC_CTYPE = "C"; 24 ''; 25 }; 26 27 services.matrix-synapse = { 28 enable = true; 29 settings = { 30 database = { 31 name = "psycopg2"; 32 args.password = "synapse"; 33 }; 34 enable_registration = true; 35 enable_registration_without_verification = true; 36 37 federation_sender_instances = [ "federation_sender" ]; 38 }; 39 configureRedisLocally = true; 40 workers = { 41 "federation_sender" = { }; 42 }; 43 }; 44 }; 45 }; 46 47 testScript = '' 48 start_all() 49 50 homeserver.wait_for_unit("matrix-synapse.service"); 51 homeserver.wait_for_unit("matrix-synapse-worker-federation_sender.service"); 52 ''; 53}