nix-dotfiles/hosts/tsuki/services/postgres.nix

55 lines
1.4 KiB
Nix

{ config, pkgs, lib, ... }: let
cfg = config.services.postgresql;
in {
services.postgresql = {
enable = true;
enableTCPIP = true;
authentication = pkgs.lib.mkOverride 10 ''
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
'';
settings = {
# Source: https://pgtune.leopard.in.ua/
# DB Version: 15
# OS Type: linux
# DB Type: mixed
# Total Memory (RAM): 12 GB
# CPUs num: 12
# Connections num: 150
# Data Storage: hdd
max_connections = 150;
shared_buffers = "3GB";
effective_cache_size = "9GB";
maintenance_work_mem = "768MB";
checkpoint_completion_target = 0.9;
wal_buffers = "16MB";
default_statistics_target = 100;
random_page_cost = 4;
effective_io_concurrency = 2;
work_mem = "2621kB";
min_wal_size = "1GB";
max_wal_size = "4GB";
max_worker_processes = 12;
max_parallel_workers_per_gather = 4;
max_parallel_workers = 12;
max_parallel_maintenance_workers = 4;
};
};
services.postgresqlBackup = {
enable = true;
location = "/data/backup/postgres";
backupAll = true;
};
systemd.services.postgresqlBackup = {
requires = [ "postgresql.service" ];
};
systemd.services.postgresql.serviceConfig.ReadWritePaths = [ cfg.dataDir ];
environment.systemPackages = [ config.services.postgresql.package ];
}