{ makeSystem, nixpkgs, }: makeSystem { system = "x86_64-linux"; name = "nixng-synapse-postgresql"; inherit nixpkgs; config = { pkgs, config, ... }: { config = { dumb-init = { enable = true; type.services = {}; }; services.postgresql = { enable = true; package = pkgs.postgresql_12; initialScript = "/secrets/init.sql"; enableTCPIP = true; authentication = "host all all all md5"; config = { max_connections = 70; shared_buffers = "384MB"; effective_cache_size = "1152MB"; maintenance_work_mem = "96MB"; checkpoint_completion_target = "0.9"; wal_buffers = "11796kB"; default_statistics_target = 100; random_page_cost = 4; effective_io_concurrency = 2; work_mem = "1966kB"; min_wal_size = "1GB"; max_wal_size = "4GB"; max_worker_processes = 24; max_parallel_workers_per_gather = 4; max_parallel_workers = 24; max_parallel_maintenance_workers = 4; }; ensureDatabases = { "synapse" = { ENCODING = "UTF8"; TEMPLATE = "template0"; }; "mautrix-facebook" = { ENCODING = "UTF8"; TEMPLATE = "template0"; }; "mautrix-signal" = { ENCODING = "UTF8"; TEMPLATE = "template0"; }; "mautrix-whatsapp" = { ENCODING = "UTF8"; TEMPLATE = "template0"; }; "mautrix-discord" = { ENCODING = "UTF8"; TEMPLATE = "template0"; }; "mautrix-slack" = { ENCODING = "UTF8"; TEMPLATE = "template0"; }; }; ensureExtensions = {}; ensureUsers = [ { name = "synapse"; ensurePermissions."DATABASE \"synapse\"" = "ALL PRIVILEGES"; } { name = "mautrix-facebook"; ensurePermissions."DATABASE \"mautrix-facebook\"" = "ALL PRIVILEGES"; } { name = "mautrix-signal"; ensurePermissions."DATABASE \"mautrix-signal\"" = "ALL PRIVILEGES"; } { name = "mautrix-whatsapp"; ensurePermissions."DATABASE \"mautrix-whatsapp\"" = "ALL PRIVILEGES"; } { name = "mautrix-discord"; ensurePermissions."DATABASE \"mautrix-discord\"" = "ALL PRIVILEGES"; } { name = "mautrix-slack"; ensurePermissions."DATABASE \"mautrix-slack\"" = "ALL PRIVILEGES"; } ]; }; }; }; }