mirror of
https://github.com/RGBCube/ncc
synced 2025-07-27 10:07:44 +00:00
feat: move postgres to shared modules
This commit is contained in:
parent
cb7ba948d9
commit
dd4fa3b28d
7 changed files with 197 additions and 115 deletions
61
modules/postgresql.nix
Normal file
61
modules/postgresql.nix
Normal file
|
@ -0,0 +1,61 @@
|
|||
{ config, lib, pkgs, ... }: let
|
||||
inherit (lib) const enabled flip genAttrs mkForce mkOverride mkValue;
|
||||
in {
|
||||
config.services.prometheus.exporters.postgres = enabled {
|
||||
listenAddress = "[::]";
|
||||
runAsLocalSuperUser = true;
|
||||
};
|
||||
|
||||
config.services.restic.backups = genAttrs config.services.restic.hosts <| const {
|
||||
paths = [ "/tmp/postgresql-dump.sql.gz" ];
|
||||
|
||||
backupPrepareCommand = /* sh */ ''
|
||||
${config.services.postgresql.package}/bin/pg_dumpall --clean \
|
||||
| ${lib.getExe pkgs.gzip} --rsyncable \
|
||||
> /tmp/postgresql-dump.sql.gz
|
||||
'';
|
||||
|
||||
backupCleanupCommand = /* sh */ ''
|
||||
rm /tmp/postgresql-dump.sql.gz
|
||||
'';
|
||||
};
|
||||
|
||||
config.environment.systemPackages = [
|
||||
config.services.postgresql.package
|
||||
];
|
||||
|
||||
options.services.postgresql.ensure = mkValue [];
|
||||
|
||||
config.services.postgresql = enabled {
|
||||
package = pkgs.postgresql_17;
|
||||
|
||||
enableJIT = true;
|
||||
enableTCPIP = true; # We override it, but might as well.
|
||||
|
||||
settings.listen_addresses = mkForce "::";
|
||||
authentication = mkOverride 10 /* ini */ ''
|
||||
# DATABASE USER AUTHENTICATION
|
||||
local all all peer
|
||||
|
||||
# DATABASE USER ADDRESS AUTHENTICATION
|
||||
host all all ::/0 md5
|
||||
'';
|
||||
|
||||
ensure = [ "postgres" "root" ];
|
||||
|
||||
initdbArgs = [ "--locale=C" "--encoding=UTF8" ];
|
||||
ensureDatabases = config.services.postgresql.ensure;
|
||||
|
||||
ensureUsers = flip map config.services.postgresql.ensure (name: {
|
||||
inherit name;
|
||||
|
||||
ensureDBOwnership = true;
|
||||
|
||||
ensureClauses = {
|
||||
login = true;
|
||||
superuser = name == "postgres" || name == "root";
|
||||
};
|
||||
});
|
||||
};
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue