# SPDX-FileCopyrightText: 2024 Tom Hubrecht <tom.hubrecht@dgnum.eu>
#
# SPDX-License-Identifier: EUPL-1.2

{ pkgs, ... }:

{
  services.postgresql = {
    enable = true;

    package = pkgs.postgresql_16;

    settings = {
      checkpoint_completion_target = 0.90625;
      default_statistics_target = 100;
      effective_cache_size = "32GB";
      effective_io_concurrency = 200;
      maintenance_work_mem = "2GB";
      max_connections = 500;
      max_parallel_maintenance_workers = 4;
      max_parallel_workers = 12;
      max_parallel_workers_per_gather = 4;
      max_wal_size = "4GB";
      max_worker_processes = 12;
      min_wal_size = "1GB";
      random_page_cost = 1.125;
      shared_buffers = "16GB";
      wal_buffers = "16MB";
      work_mem = "83886kB";
    };
  };

  dgn-console = {
    # Update the versions below for upgrading
    pg-upgrade-to = pkgs.postgresql_16.withPackages (ps: [ ps.postgis ]);
    pg-upgrade-from = pkgs.postgresql_16.withPackages (ps: [ ps.postgis ]);
  };
}