aboutsummaryrefslogtreecommitdiff
path: root/systems/zoldene/database.nix
blob: 2eb6cd97ab74f8360efe60fa6772fb09401749c5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
{ pkgs, config, lib, nodes, ... }:
let
  psqlVersion = pkgs.postgresql_16.psqlSchema;
in
{
  disko.devices.zpool.zfast.datasets."root/persist/var/lib/postgresql" =
    { type = "zfs_fs"; mountpoint = "/persist/zfast/var/lib/postgresql"; options.mountpoint = "legacy"; };
  disko.devices.zpool.zfast.datasets."root/persist/var/lib/postgresql/${psqlVersion}" =
    { type = "zfs_fs"; mountpoint = "/persist/zfast/var/lib/postgresql/${psqlVersion}"; options.mountpoint = "legacy"; };
  environment.persistence."/persist/zfast".directories = [
    {
      directory = "/var/lib/postgresql";
      user = config.users.users.postgres.name;
      group = config.users.users.postgres.group;
      mode = "0755";
    }
    {
      directory = "/var/lib/postgresql/${psqlVersion}";
      user = config.users.users.postgres.name;
      group = config.users.users.postgres.group;
      mode = "0755";
    }
  ];
  systemd.services.postgresql.after = [
    "var-lib-postgresql.mount"
    "var-lib-postgresql-16.mount"
    "persist-zfast-var-lib-postgresql.mount"
    "persist-zfast-var-lib-postgresql-16.mount"
  ];
  systemd.services.postgresql.unitConfig = {
    BindsTo = [
      "var-lib-postgresql.mount"
      "var-lib-postgresql-16.mount"
      "persist-zfast-var-lib-postgresql.mount"
      "persist-zfast-var-lib-postgresql-16.mount"
    ];
  };

  services.postgresql = {
    enable = true;
    package = pkgs.postgresql_16;
    settings.listen_addresses = lib.mkForce (builtins.concatStringsSep "," [
      "localhost"
      config.hostEnv.wireguard.ip
    ]);
    authentication = ''
      host   replication   postgres   ${nodes.backup-2.config.hostEnv.wireguard.ip}/32   ident
    '';
  };
}