My Nix Configuration
at main 1.5 kB view raw
1{ pkgs, ... }: 2# let 3# cfg = config.services.postgresql; 4# in 5{ 6 services.postgresql = { 7 enable = true; 8 package = pkgs.postgresql_16; 9 enableJIT = true; 10 # Settings taken from [PGTune](https://pgtune.leopard.in.ua/) 11 settings = { 12 max_connections = "300"; 13 shared_buffers = "2GB"; 14 effective_cache_size = "6GB"; 15 maintenance_work_mem = "512MB"; 16 checkpoint_completion_target = 0.9; 17 wal_buffers = "16MB"; 18 default_statistics_target = 100; 19 random_page_cost = 4; 20 effective_io_concurrency = 2; 21 work_mem = "2621kB"; 22 huge_pages = "off"; 23 min_wal_size = "1GB"; 24 max_wal_size = "4GB"; 25 max_worker_processes = 8; 26 max_parallel_workers_per_gather = 4; 27 max_parallel_workers = 8; 28 max_parallel_maintenance_workers = 4; 29 }; 30 }; 31 # systemd.timers.pg-autovacuum = { 32 # description = "Timer for Postgres Autovacuum"; 33 # timerConfig = { 34 # OnCalendar = "*-*-* 01:00:00"; 35 # Unit = "pg-autovacuum.service"; 36 # }; 37 # }; 38 # systemd.services.pg-autovacuum = { 39 # description = "Vacuum all Postgres databases."; 40 # requisite = [ "postgresql.service" ]; 41 # wantedBy = [ "multi-user.target" ]; 42 # serviceConfig = { 43 # Type = "oneshot"; 44 # User = "postgres"; 45 # Group = "postgres"; 46 # SyslogIdentifier = "pg-autovacuum"; 47 # ExecStart = "${cfg.package}/bin/vacuumdb --all --echo --jobs=6 --parallel=5 --analyze --verbose"; 48 # }; 49 # }; 50}