refactor: group databases

This commit is contained in:
Ivan R. 2024-03-11 21:51:42 +05:00
parent 16e61fb814
commit 543b6153bf
No known key found for this signature in database
GPG key ID: 56C7BAAE859B302C
5 changed files with 85 additions and 102 deletions

View file

@ -5,15 +5,17 @@
./networking.nix
./users.nix
./time.nix
./databases/postgres.nix
./databases/mysql.nix
./databases/redis.nix
./programs/nginx.nix
./programs/bash.nix
./programs/acme.nix
./programs/postgres.nix
./programs/mastodon.nix
./programs/redis.nix
./programs/nextcloud.nix
./programs/jellyfin.nix
./programs/mysql.nix
./programs/photoprism.nix
./programs/synapse.nix
./programs/fail2ban.nix

View file

@ -0,0 +1,80 @@
{ config, pkgs, ... }:
{
config.services.postgresql = {
enable = true;
package = pkgs.postgresql_15;
ensureDatabases = [
"mastodon"
"matrix-synapse"
"nextcloud"
"maddy"
"plausible"
"microboard"
"freshrss"
"prosody"
"grafana"
];
ensureUsers = [
{
name = "mastodon";
ensureDBOwnership = true;
ensureClauses.login = true;
}
{
name = "nextcloud";
ensureDBOwnership = true;
ensureClauses.login = true;
}
{
name = "matrix-synapse";
ensureDBOwnership = true;
ensureClauses.login = true;
}
{
name = "maddy";
ensureDBOwnership = true;
ensureClauses.login = true;
}
{
name = "plausible";
ensureDBOwnership = true;
ensureClauses.login = true;
}
{
name = "microboard";
ensureDBOwnership = true;
ensureClauses.login = true;
}
{
name = "freshrss";
ensureDBOwnership = true;
ensureClauses.login = true;
}
{
name = "prosody";
ensureDBOwnership = true;
ensureClauses.login = true;
}
{
name = "grafana";
ensureDBOwnership = true;
ensureClauses.login = true;
}
];
identMap = ''
# ArbitraryMapName systemUser DBUser
superuser_map root postgres
superuser_map postgres postgres
# Let other names login as themselves
superuser_map /^(.*)$ \1
'';
authentication = pkgs.lib.mkOverride 10 ''
#type database DBuser auth-method optional_ident_map
local sameuser all peer map=superuser_map
#type database DBuser origin-address auth-method
host all all 127.0.0.1/32 scram-sha-256
'';
};
}

View file

@ -1,99 +0,0 @@
{ config, pkgs, ... }:
{
config.services.postgresql = {
enable = true;
package = pkgs.postgresql_15;
ensureDatabases = [ "mastodon" "matrix-synapse" "nextcloud" "maddy" "plausible" "microboard" "freshrss" "prosody" "grafana" ];
ensureUsers = [
{
name = "mastodon";
ensurePermissions = {
"DATABASE mastodon" = "ALL PRIVILEGES";
};
ensureClauses.login = true;
}
{
name = "nextcloud";
ensurePermissions = {
"DATABASE nextcloud" = "ALL PRIVILEGES";
};
ensureClauses.login = true;
}
{
name = "matrix-synapse";
ensurePermissions = {
"DATABASE \"matrix-synapse\"" = "ALL PRIVILEGES";
};
ensureClauses.login = true;
}
{
name = "maddy";
ensurePermissions = {
"DATABASE maddy" = "ALL PRIVILEGES";
};
ensureClauses.login = true;
}
{
name = "plausible";
ensurePermissions = {
"DATABASE plausible" = "ALL PRIVILEGES";
};
ensureClauses.login = true;
}
{
name = "microboard";
ensurePermissions = {
"DATABASE microboard" = "ALL PRIVILEGES";
};
ensureClauses.login = true;
}
{
name = "freshrss";
ensurePermissions = {
"DATABASE freshrss" = "ALL PRIVILEGES";
};
ensureClauses.login = true;
}
{
name = "prosody";
ensurePermissions = {
"DATABASE prosody" = "ALL PRIVILEGES";
};
ensureClauses.login = true;
}
{
name = "grafana";
ensurePermissions = {
"DATABASE grafana" = "ALL PRIVILEGES";
};
ensureClauses.login = true;
}
];
initialScript = pkgs.writeText "pg-init.sql" ''
ALTER DATABASE nextcloud OWNER TO nextcloud;
ALTER DATABASE mastodon OWNER TO mastodon;
ALTER DATABASE "matrix-synapse" OWNER TO "matrix-synapse";
ALTER DATABASE maddy OWNER TO maddy;
ALTER DATABASE plausible OWNER TO plausible;
ALTER DATABASE microboard OWNER TO microboard;
ALTER DATABASE freshrss OWNER TO freshrss;
ALTER DATABASE prosody OWNER TO prosody;
ALTER DATABASE grafana OWNER TO grafana;
'';
identMap = ''
# ArbitraryMapName systemUser DBUser
superuser_map root postgres
superuser_map postgres postgres
# Let other names login as themselves
superuser_map /^(.*)$ \1
'';
authentication = pkgs.lib.mkOverride 10 ''
#type database DBuser auth-method optional_ident_map
local sameuser all peer map=superuser_map
#type database DBuser origin-address auth-method
host all all 127.0.0.1/32 scram-sha-256
'';
};
}