feat: PostgreSQL migration
This commit is contained in:
67
postgresql/postgresql.nix
Normal file
67
postgresql/postgresql.nix
Normal file
@@ -0,0 +1,67 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
let
|
||||
sp = config.selfprivacy;
|
||||
pleroma_location =
|
||||
if lib.attrsets.hasAttr "pleroma" sp.modules && lib.attrsets.hasAttr "location" sp.modules.pleroma
|
||||
then sp.modules.pleroma.location
|
||||
else null;
|
||||
postgres_location =
|
||||
if lib.attrsets.hasAttr "postgresql" sp && lib.attrsets.hasAttr "location" sp.postgresql
|
||||
then sp.postgresql.location
|
||||
else null;
|
||||
# Priority: postgresql > pleroma
|
||||
location = if postgres_location != null then postgres_location else pleroma_location;
|
||||
# Active if there is a location
|
||||
enable = location != null;
|
||||
pleroma_enabled =
|
||||
if lib.attrsets.hasAttr "pleroma" sp.modules && lib.attrsets.hasAttr "enable" sp.modules.pleroma
|
||||
then sp.modules.pleroma.enable
|
||||
else false;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./upgrade12to16.nix
|
||||
];
|
||||
fileSystems = lib.mkIf enable {
|
||||
"/var/lib/postgresql" = {
|
||||
device = "/volumes/${location}/postgresql";
|
||||
options = [
|
||||
"bind"
|
||||
"x-systemd.required-by=postgresql.service"
|
||||
"x-systemd.required-by=postgresql-upgrade12to16.service"
|
||||
"x-systemd.before=postgresql.service"
|
||||
"x-systemd.before=postgresql-upgrade12to16.service"
|
||||
];
|
||||
};
|
||||
"/var/lib/postgresql-dumps" = {
|
||||
device = "/volumes/${location}/postgresql-dumps";
|
||||
options = [ "bind" ];
|
||||
};
|
||||
};
|
||||
services = {
|
||||
postgresql = {
|
||||
enable = enable;
|
||||
package = pkgs.postgresql_16;
|
||||
# Change to selfpirvacy-api user when API migrates to rootless daemon
|
||||
authentication = ''
|
||||
local all postgres peer map=selfprivacy-api
|
||||
'';
|
||||
identMap = ''
|
||||
selfprivacy-api root postgres
|
||||
selfprivacy-api postgres postgres
|
||||
'';
|
||||
};
|
||||
postgresqlUpgrade12to16 = {
|
||||
enable = enable;
|
||||
pleromaEnabled = pleroma_enabled;
|
||||
};
|
||||
};
|
||||
systemd = {
|
||||
services.postgresql = {
|
||||
serviceConfig.Slice = "postgresql.slice";
|
||||
};
|
||||
slices.postgresql = {
|
||||
description = "PostgreSQL slice";
|
||||
};
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user