diff options
Diffstat (limited to 'hosts/vidhar/pgbackrest/default.nix')
-rw-r--r-- | hosts/vidhar/pgbackrest/default.nix | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/hosts/vidhar/pgbackrest/default.nix b/hosts/vidhar/pgbackrest/default.nix new file mode 100644 index 00000000..49644e51 --- /dev/null +++ b/hosts/vidhar/pgbackrest/default.nix | |||
@@ -0,0 +1,101 @@ | |||
1 | { config, flake, ... }: | ||
2 | |||
3 | let | ||
4 | surtrRepoCfg = flake.nixosConfigurations."surtr".config.services.pgbackrest.settings.surtr; | ||
5 | in { | ||
6 | config = { | ||
7 | services.pgbackrest = { | ||
8 | enable = true; | ||
9 | tlsServer = { | ||
10 | enable = true; | ||
11 | |||
12 | user = "pgbackrest"; | ||
13 | group = "pgbackrest"; | ||
14 | }; | ||
15 | |||
16 | settings = { | ||
17 | "surtr" = { | ||
18 | pg1-host-type = "tls"; | ||
19 | pg1-host = "pgbackrest.surtr.yggdrasil"; | ||
20 | pg1-host-ca-file = toString ./ca/ca.crt; | ||
21 | pg1-host-cert-file = toString ./tls.crt; | ||
22 | pg1-host-key-file = config.sops.secrets."pgbackrest.key".path; | ||
23 | inherit (surtrRepoCfg) pg1-path; | ||
24 | |||
25 | # repo1-host-type = "tls"; | ||
26 | # repo1-host = "pgbackrest.surtr.yggdrasil"; | ||
27 | # repo1-host-ca-file = toString ./ca/ca.crt; | ||
28 | # repo1-host-cert-file = toString ./tls.crt; | ||
29 | # repo1-host-key-file = config.sops.secrets."pgbackrest.key".path; | ||
30 | # repo1-retention-full-type = "time"; | ||
31 | # repo1-retention-full = 7; | ||
32 | # repo1-retention-archive = 2; | ||
33 | |||
34 | repo2-path = "/var/lib/pgbackrest"; | ||
35 | repo2-retention-full-type = "time"; | ||
36 | repo2-retention-full = 14; | ||
37 | repo2-retention-archive = 7; | ||
38 | }; | ||
39 | |||
40 | "global" = { | ||
41 | compress-type = "zst"; | ||
42 | compress-level = 9; | ||
43 | |||
44 | archive-async = true; | ||
45 | spool-path = "/var/spool/pgbackrest"; | ||
46 | }; | ||
47 | |||
48 | "global:server" = { | ||
49 | tls-server-address = "2a03:4000:52:ada:1:1::"; | ||
50 | tls-server-ca-file = toString ./ca/ca.crt; | ||
51 | tls-server-cert-file = toString ./tls.crt; | ||
52 | tls-server-key-file = config.sops.secrets."pgbackrest.key".path; | ||
53 | tls-server-auth = ["surtr.yggdrasil=surtr"]; | ||
54 | }; | ||
55 | |||
56 | "global:archive-push" = { | ||
57 | process-max = 6; | ||
58 | }; | ||
59 | "global:archive-get" = { | ||
60 | process-max = 6; | ||
61 | }; | ||
62 | }; | ||
63 | |||
64 | backups."surtr-daily" = { | ||
65 | stanza = "surtr"; | ||
66 | repo = "2"; | ||
67 | user = "pgbackrest"; | ||
68 | group = "pgbackrest"; | ||
69 | timerConfig.OnCalendar = "daily Europe/Berlin"; | ||
70 | }; | ||
71 | }; | ||
72 | |||
73 | systemd.tmpfiles.rules = [ | ||
74 | "d /var/lib/pgbackrest 0750 pgbackrest pgbackrest - -" | ||
75 | "d /var/spool/pgbackrest 0750 pgbackrest pgbackrest - -" | ||
76 | ]; | ||
77 | |||
78 | users = { | ||
79 | users.pgbackrest = { | ||
80 | name = "pgbackrest"; | ||
81 | group = "pgbackrest"; | ||
82 | isSystemUser = true; | ||
83 | home = "/var/lib/pgbackrest"; | ||
84 | }; | ||
85 | groups.pgbackrest = {}; | ||
86 | }; | ||
87 | |||
88 | systemd.services."pgbackrest-tls-server".serviceConfig = { | ||
89 | StateDirectory = [ "pgbackrest" ]; | ||
90 | StateDirectoryMode = "0750"; | ||
91 | }; | ||
92 | |||
93 | sops.secrets."pgbackrest.key" = { | ||
94 | format = "binary"; | ||
95 | sopsFile = ./tls.key; | ||
96 | owner = "pgbackrest"; | ||
97 | group = "pgbackrest"; | ||
98 | mode = "0400"; | ||
99 | }; | ||
100 | }; | ||
101 | } | ||