mirror of
https://git.selfprivacy.org/SelfPrivacy/selfprivacy-nixos-config.git
synced 2025-01-06 16:14:17 +00:00
68 lines
1.9 KiB
Nix
68 lines
1.9 KiB
Nix
{ 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";
|
|
};
|
|
};
|
|
}
|