mirror of
https://github.com/ordinary-dev/nixos-config.git
synced 2024-09-19 19:30:28 +05:00
refactor: group databases
This commit is contained in:
parent
16e61fb814
commit
543b6153bf
|
@ -5,15 +5,17 @@
|
||||||
./networking.nix
|
./networking.nix
|
||||||
./users.nix
|
./users.nix
|
||||||
./time.nix
|
./time.nix
|
||||||
|
|
||||||
|
./databases/postgres.nix
|
||||||
|
./databases/mysql.nix
|
||||||
|
./databases/redis.nix
|
||||||
|
|
||||||
./programs/nginx.nix
|
./programs/nginx.nix
|
||||||
./programs/bash.nix
|
./programs/bash.nix
|
||||||
./programs/acme.nix
|
./programs/acme.nix
|
||||||
./programs/postgres.nix
|
|
||||||
./programs/mastodon.nix
|
./programs/mastodon.nix
|
||||||
./programs/redis.nix
|
|
||||||
./programs/nextcloud.nix
|
./programs/nextcloud.nix
|
||||||
./programs/jellyfin.nix
|
./programs/jellyfin.nix
|
||||||
./programs/mysql.nix
|
|
||||||
./programs/photoprism.nix
|
./programs/photoprism.nix
|
||||||
./programs/synapse.nix
|
./programs/synapse.nix
|
||||||
./programs/fail2ban.nix
|
./programs/fail2ban.nix
|
||||||
|
|
80
nixos/databases/postgres.nix
Normal file
80
nixos/databases/postgres.nix
Normal 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
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
|
@ -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
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in a new issue