#
# System notifications
#

{ config, lib, pkgs, ... }:

{
  services.postgresql = {
    enable = true;
    package = pkgs.postgresql_15;
    settings = {
        max_connections = 200;
        listen_addresses = "localhost";
        password_encryption = "scram-sha-256";
        shared_buffers = "4GB";
        work_mem = "2GB";
        maintenance_work_mem = "500MB";
        autovacuum_work_mem = -1;
        log_timezone = "Europe/Berlin";
        timezone = "Europe/Berlin";
    };
    authentication = pkgs.lib.mkOverride 14 ''
        local  all         postgres        peer
        host   giteadb     gitea          localhost scram-sha-256
        host   nextclouddb nextcloud      localhost scram-sha-256
        host   synapsedb   synapse        localhost scram-sha-256
        host   whatsappdb  mautrixwa      localhost scram-sha-256
        host   telegramdb  mautrixtele    localhost scram-sha-256
        host   signaldb    mautrixsignal  localhost scram-sha-256
        host   onlyoffice  onlyoffice     localhost scram-sha-256
        local  onlyoffice  onlyoffice      peer
    '';
    initialScript = config.age.secrets."services/postgresql/initScript.sql".path;
  };

  services.postgresqlBackup.enable = true;

  age.secrets."services/postgresql/initScript.sql" = {
      file = ../../../secrets/services/postgresql/initScript.age;
      owner = "postgres";
  };

}