Signed-off-by: Lander Van den Bulcke <landervandenbulcke@gmail.com>
84 lines
1.6 KiB
Nix
84 lines
1.6 KiB
Nix
{ config, pkgs, ... }:
|
|
{
|
|
services.postgresql = {
|
|
enable = true;
|
|
enableTCPIP = true;
|
|
authentication = pkgs.lib.mkOverride 10 ''
|
|
#type database dbuser origin-address auth-method
|
|
local all all trust
|
|
host all all 100.64.0.0/24 trust # trust tailnet
|
|
'';
|
|
ensureDatabases = [
|
|
"authelia"
|
|
"forgejo"
|
|
"lldap"
|
|
];
|
|
ensureUsers = [
|
|
{
|
|
name = "authelia";
|
|
ensureDBOwnership = true;
|
|
}
|
|
{
|
|
name = "forgejo";
|
|
ensureDBOwnership = true;
|
|
}
|
|
{
|
|
name = "lldap";
|
|
ensureDBOwnership = true;
|
|
}
|
|
];
|
|
};
|
|
|
|
services.postgresqlBackup = {
|
|
enable = true;
|
|
startAt = "*-*-* 02:00:00";
|
|
databases = [
|
|
"authelia"
|
|
"forgejo"
|
|
"lldap"
|
|
];
|
|
};
|
|
|
|
services.restic.backups = {
|
|
postgresql = {
|
|
initialize = true;
|
|
|
|
repositoryFile = config.sops.secrets.restic-repository.path;
|
|
passwordFile = config.sops.secrets.restic-password.path;
|
|
environmentFile = config.sops.secrets.restic-environment.path;
|
|
|
|
timerConfig = {
|
|
OnCalendar = "03:00";
|
|
Persistent = true;
|
|
};
|
|
|
|
paths = [
|
|
"/var/backup/postgresql"
|
|
];
|
|
|
|
pruneOpts = [
|
|
"--keep-daily 7"
|
|
"--keep-weekly 5"
|
|
"--keep-weekly 12"
|
|
];
|
|
};
|
|
};
|
|
|
|
sops = {
|
|
defaultSopsFile = ./db-01.yaml;
|
|
validateSopsFiles = false;
|
|
secrets = {
|
|
restic-environment = {
|
|
owner = "root";
|
|
};
|
|
restic-password = {
|
|
owner = "root";
|
|
};
|
|
restic-repository = {
|
|
owner = "root";
|
|
};
|
|
};
|
|
};
|
|
|
|
system.stateVersion = "25.05";
|
|
}
|