1
Fork 0
mirror of https://github.com/RGBCube/ncc synced 2025-07-28 18:47:44 +00:00

fix: fix postgresql ensure declarations and add a helper

This commit is contained in:
RGBCube 2025-02-23 15:02:47 +03:00
parent d8bcbab825
commit 377d93df78
5 changed files with 17 additions and 50 deletions

View file

@ -17,16 +17,7 @@ in {
owner = "forgejo"; owner = "forgejo";
}; };
services.postgresql = let services.postgresql.ensure = [ "forgejo" ];
users = [ "forgejo" ];
in {
ensureDatabases = users;
ensureUsers = map users (name: {
inherit name;
ensureDBOwnership = true;
});
};
services.restic.backups = genAttrs config.services.restic.hosts <| const { services.restic.backups = genAttrs config.services.restic.hosts <| const {
paths = [ "/var/lib/gitea-runner" "/var/lib/forgejo" ]; paths = [ "/var/lib/gitea-runner" "/var/lib/forgejo" ];

View file

@ -17,16 +17,7 @@ in {
owner = "grafana"; owner = "grafana";
}; };
services.postgresql = let services.postgresql.ensure = [ "grafana" ];
users = [ "grafana" ];
in {
ensureDatabases = users;
ensureUsers = map users (name: {
inherit name;
ensureDBOwnership = true;
});
};
services.restic.backups = genAttrs config.services.restic.hosts <| const { services.restic.backups = genAttrs config.services.restic.hosts <| const {
paths = [ "/var/lib/grafana" ]; paths = [ "/var/lib/grafana" ];

View file

@ -46,16 +46,7 @@ in {
owner = "matrix-synapse"; owner = "matrix-synapse";
}; };
services.postgresql = let services.postgresql.ensure = [ "matrix-synapse" "matrix-sliding-sync" ];
users = [ "matrix-synapse" "matrix-sliding-sync" ];
in {
ensureDatabases = users;
ensureUsers = map users (name: {
inherit name;
ensureDBOwnership = true;
});
};
services.restic.backups = genAttrs config.services.restic.hosts <| const { services.restic.backups = genAttrs config.services.restic.hosts <| const {
paths = [ "/var/lib/matrix-synapse" "/var/lib/matrix-sliding-sync" ]; paths = [ "/var/lib/matrix-synapse" "/var/lib/matrix-sliding-sync" ];

View file

@ -25,16 +25,7 @@ in {
passwordFile = config.secrets.nextcloudPasswordExporter.path; passwordFile = config.secrets.nextcloudPasswordExporter.path;
}; };
services.postgresql = let services.postgresql.ensure = [ "nextcloud" ];
users = [ "nextcloud" ];
in {
ensureDatabases = users;
ensureUsers = map users (name: {
inherit name;
ensureDBOwnership = true;
});
};
services.restic.backups = genAttrs config.services.restic.hosts <| const { services.restic.backups = genAttrs config.services.restic.hosts <| const {
paths = [ "/var/lib/nextcloud" ]; paths = [ "/var/lib/nextcloud" ];

View file

@ -1,16 +1,16 @@
{ config, lib, pkgs, ... }: let { config, lib, pkgs, ... }: let
inherit (lib) const enabled genAttrs mkForce mkOverride; inherit (lib) const enabled flip genAttrs mkForce mkOverride mkValue;
in { in {
environment.systemPackages = [ config.environment.systemPackages = [
config.services.postgresql.package config.services.postgresql.package
]; ];
services.prometheus.exporters.postgres = enabled { config.services.prometheus.exporters.postgres = enabled {
listenAddress = "[::]"; listenAddress = "[::]";
runAsLocalSuperUser = true; runAsLocalSuperUser = true;
}; };
services.restic.backups = genAttrs config.services.restic.hosts <| const { config.services.restic.backups = genAttrs config.services.restic.hosts <| const {
paths = [ "/tmp/postgresql-dump.sql.gz" ]; paths = [ "/tmp/postgresql-dump.sql.gz" ];
backupPrepareCommand = '' backupPrepareCommand = ''
@ -24,7 +24,9 @@ in {
''; '';
}; };
services.postgresql = enabled { options.services.postgresql.ensure = mkValue [ "postgres" "root" ];
config.services.postgresql = enabled {
package = pkgs.postgresql_14; package = pkgs.postgresql_14;
enableJIT = true; enableJIT = true;
@ -40,15 +42,16 @@ in {
local all all peer local all all peer
''; '';
ensureUsers = map [ "postgres" "root" ] (name: { ensureDatabases = config.services.postgres.ensure;
ensureUsers = flip map config.services.postgres.ensure (name: {
inherit name; inherit name;
ensureDBOwnership = true;
ensureClauses = { ensureClauses = {
createdb = true;
createrole = true;
login = true; login = true;
replication = true; superuser = name == "postgres" || name == "root";
superuser = true;
}; };
}); });