88 lines
2.8 KiB
Nix
Executable file
88 lines
2.8 KiB
Nix
Executable file
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
...
|
|
}:
|
|
|
|
{
|
|
systemd.tmpfiles.rules = [ "d /mnt/postgres/data 0750 postgres postgres" ];
|
|
|
|
services.postgresql = {
|
|
enable = true;
|
|
package = pkgs.postgresql_16;
|
|
enableTCPIP = true;
|
|
authentication = pkgs.lib.mkOverride 10 ''
|
|
# TYPE, DATABASE, USER, ADDRESS, METHOD
|
|
local all all trust
|
|
host all all 127.0.0.1/32 trust
|
|
host all all ::1/128 trust
|
|
host matrix-synapse matrix-synapse 127.0.0.1/32 trust
|
|
host all all 0.0.0.0/0 md5
|
|
'';
|
|
# initialScript = pkgs.writeText "backend-initScript" ''
|
|
# CREATE ROLE nixcloud WITH LOGIN PASSWORD 'nixcloud' CREATEDB;
|
|
# CREATE DATABASE nixcloud;
|
|
# GRANT ALL PRIVILEGES ON DATABASE nixcloud TO nixcloud;
|
|
# '';
|
|
dataDir = "/mnt/postgres/data";
|
|
settings = {
|
|
# https://pgconfigurator.cybertec.at/
|
|
max_connections = 250;
|
|
superuser_reserved_connections = 3;
|
|
|
|
# shared_buffers = "32565MB";
|
|
# work_mem = "512MB";
|
|
# maintenance_work_mem = "1024MB";
|
|
# huge_pages = "try";
|
|
# effective_cache_size = "60GB"; #was 22
|
|
# effective_io_concurrency = "8";
|
|
# random_page_cost = 4;
|
|
|
|
# can use this to view stats: SELECT query, total_time, calls, rows FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;
|
|
# shared_preload_libraries = "pg_stat_statements";
|
|
# track_io_timing = "on";
|
|
# track_functions = "pl";
|
|
# "pg_stat_statements.max" = "10000"; # additional
|
|
# "pg_stat_statements.track" = "all"; # additional
|
|
|
|
# wal_level = "replica";
|
|
# max_wal_senders = 0;
|
|
# synchronous_commit = "off"; #was on
|
|
|
|
# checkpoint_timeout = "15min";
|
|
# checkpoint_completion_target = "0.9";
|
|
# max_wal_size = "1GB";
|
|
# min_wal_size = "512MB";
|
|
#
|
|
# wal_compression = "on";
|
|
# wal_buffers = "-1";
|
|
# wal_writer_delay = "200ms";
|
|
# wal_writer_flush_after = "1MB";
|
|
# #checkpoint_segments = "64"; # additional
|
|
# default_statistics_target = "250"; # additional
|
|
|
|
# bgwriter_delay = "200ms";
|
|
# bgwriter_lru_maxpages = "100";
|
|
# bgwriter_lru_multiplier = "2.0";
|
|
# bgwriter_flush_after = "0";
|
|
|
|
# max_worker_processes = "32"; #was 14
|
|
# max_parallel_workers_per_gather = "16"; #was 7
|
|
# max_parallel_maintenance_workers = "16"; #was 7
|
|
# max_parallel_workers = "32"; #was 14
|
|
# parallel_leader_participation = "on";
|
|
|
|
# enable_partitionwise_join = "on";
|
|
# enable_partitionwise_aggregate = "on";
|
|
# jit = "on";
|
|
# max_slot_wal_keep_size = "1GB";
|
|
# track_wal_io_timing = "on";
|
|
# maintenance_io_concurrency = "4";
|
|
# wal_recycle = "on";
|
|
|
|
};
|
|
};
|
|
|
|
}
|