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}