feat: fix all initial impermanence perm folder creation
Some checks failed
ci / treefmt (push) Failing after 4s

This commit is contained in:
Ceferino Patino 2026-07-01 00:24:52 -05:00
commit de972b9fb0
Signed by: c4patino
SSH key fingerprint: SHA256:Wu+cU1t+7zVT9wzew/4meNmeulo66NzMqc22MdDBgXI
36 changed files with 268 additions and 94 deletions

View file

@ -48,6 +48,11 @@ in {
});
};
${namespace}.services.storage.impermanence.folders = ["/srv/minecraft"];
${namespace}.services.storage.impermanence.folders = [
{
directory = "/srv/minecraft";
mode = "700";
}
];
};
}

View file

@ -31,6 +31,11 @@ in {
port = cfg.port;
};
${namespace}.services.storage.impermanence.folders = ["/srv/terraria"];
${namespace}.services.storage.impermanence.folders = [
{
directory = "/srv/terraria";
mode = "700";
}
];
};
}

View file

@ -19,6 +19,15 @@ in {
services.teamviewer = enabled;
${namespace}.services.storage.impermanence.folders = ["/var/lib/teamviewer"];
${namespace}.services.storage.impermanence.folders = let
inherit (config.users.users) teamviewer;
in [
{
directory = "/var/lib/teamviewer";
user = teamviewer.name;
group = teamviewer.group;
mode = "700";
}
];
};
}

View file

@ -25,6 +25,15 @@ in {
'';
};
${namespace}.services.storage.impermanence.folders = ["/var/cache/tuigreet"];
${namespace}.services.storage.impermanence.folders = let
inherit (config.users.users) greeter;
in [
{
directory = "/var/cache/tuigreet";
user = greeter.name;
group = greeter.group;
mode = "700";
}
];
};
}

View file

@ -21,6 +21,11 @@ in {
powerOnBoot = true;
};
${namespace}.services.storage.impermanence.folders = ["/var/lib/bluetooth"];
${namespace}.services.storage.impermanence.folders = [
{
directory = "/var/lib/bluetooth";
mode = "700";
}
];
};
}

View file

@ -18,6 +18,11 @@ in {
enable = true;
};
${namespace}.services.storage.impermanence.folders = ["/var/lib/fprint"];
${namespace}.services.storage.impermanence.folders = [
{
directory = "/var/lib/fprint";
mode = "700";
}
];
};
}

View file

@ -105,6 +105,8 @@ in {
sops.secrets."forgejo/db" = {};
${namespace}.services.storage.impermanence.folders = ["/var/lib/forgejo"];
${namespace}.services.storage.impermanence.folders = [
"/var/lib/forgejo"
];
};
}

View file

@ -110,8 +110,15 @@ in {
networking.firewall.allowedTCPPorts = [port];
${namespace}.services.storage.impermanence.folders = [
"/var/lib/ignis"
${namespace}.services.storage.impermanence.folders = let
inherit (config.users.users) ignis;
in [
{
directory = "/var/lib/ignis";
user = ignis.name;
group = ignis.group;
mode = "700";
}
];
};
}

View file

@ -45,12 +45,12 @@ in {
sops.secrets."environment-file/immich" = {};
${namespace}.services.storage.impermanence.folders = let
immichUser = config.users.users.immichUser;
inherit (config.users.users) immich;
in [
{
directory = "/var/lib/immich";
user = immichUser.name;
group = immichUser.group;
user = immich.name;
group = immich.group;
mode = "700";
}
];

View file

@ -26,15 +26,15 @@ in {
systemd.services.miasma = {
description = "Trap AI web scrapers in an endless poison pit";
wantedBy = ["multi-user.target"];
serviceConfig = let
miasmaUser = config.users.users.miasma;
in {
serviceConfig = let
inherit (config.users.users) miasma;
in {
Type = "simple";
Restart = "always";
RestartSec = 1;
User = miasmaUser.name;
Group = miasmaUser.group;
User = miasma.name;
Group = miasma.group;
StateDirectory = "miasma";
ReadWritePaths = "/var/lib/miasma";

View file

@ -19,8 +19,15 @@ in {
port = port;
};
${namespace}.services.storage.impermanence.folders = [
"/var/lib/prometheus2"
${namespace}.services.storage.impermanence.folders = let
inherit (config.users.users) prometheus;
in [
{
directory = "/var/lib/prometheus2";
user = prometheus.name;
group = prometheus.group;
mode = "700";
}
];
};
}

View file

@ -231,19 +231,18 @@ in {
};
${namespace}.services.storage.impermanence.folders = let
qbittorrentUser = config.users.users.qbittorrent;
quiUser = config.users.users.qui;
inherit (config.users.users) qbittorrent qui;
in [
{
directory = "/var/lib/qBittorrent";
user = qbittorrentUser.name;
group = qbittorrentUser.group;
user = qbittorrent.name;
group = qbittorrent.group;
mode = "770";
}
{
directory = "/var/lib/qui";
user = quiUser.name;
group = quiUser.group;
user = qui.name;
group = qui.group;
mode = "700";
}
];

View file

@ -74,6 +74,15 @@ in {
networking.firewall.allowedTCPPorts = [port];
${namespace}.services.storage.impermanence.folders = ["/var/lib/rustypaste"];
${namespace}.services.storage.impermanence.folders = let
inherit (config.users.users) rustypaste;
in [
{
directory = "/var/lib/rustypaste";
user = rustypaste.name;
group = rustypaste.group;
mode = "700";
}
];
};
}

View file

@ -45,7 +45,7 @@ in {
};
services.autobrr = let
autobrrUser = config.users.users.autobrr;
inherit (config.users.users) autobrr;
in
mkMerge [
{
@ -54,8 +54,8 @@ in {
];
serviceConfig = {
DynamicUser = mkForce false;
User = autobrrUser.name;
Group = autobrrUser.group;
User = autobrr.name;
Group = autobrr.group;
UMask = mkForce "0002";
EnvironmentFile = config.sops.secrets."environment-file/autobrr".path;
};
@ -84,12 +84,12 @@ in {
};
${namespace}.services.storage.impermanence.folders = let
autobrrUser = config.users.users.autobrr;
inherit (config.users.users) autobrr;
in [
{
directory = "/var/lib/autobrr";
user = autobrrUser.name;
group = autobrrUser.group;
user = autobrr.name;
group = autobrr.group;
mode = "700";
}
];

View file

@ -22,7 +22,7 @@ in {
};
systemd.services.bazarr = let
bazarrUser = config.users.users.bazarr;
inherit (config.users.users) bazarr;
dbIp = resolveDatabaseIP networkCfg.devices pgCfg.databases "bazarr";
in
mkMerge [
@ -37,8 +37,8 @@ in {
serviceConfig = {
DynamicUser = mkForce false;
User = bazarrUser.name;
Group = bazarrUser.group;
User = bazarr.name;
Group = bazarr.group;
UMask = mkForce "0002";
EnvironmentFile = config.sops.secrets."environment-file/bazarr".path;
};
@ -63,12 +63,12 @@ in {
sops.secrets."environment-file/bazarr" = {};
${namespace}.services.storage.impermanence.folders = let
bazarrUser = config.users.users.bazarr;
inherit (config.users.users) bazarr;
in [
{
directory = "/var/lib/bazarr";
user = bazarrUser.name;
group = bazarrUser.group;
user = bazarr.name;
group = bazarr.group;
mode = "700";
}
];

View file

@ -51,12 +51,12 @@ in {
};
${namespace}.services.storage.impermanence.folders = let
jellyfinUser = config.users.users.jellyfin;
inherit (config.users.users) jellyfin;
in [
{
directory = "/var/lib/jellyfin";
user = jellyfinUser.name;
group = jellyfinUser.group;
user = jellyfin.name;
group = jellyfin.group;
mode = "700";
}
];

View file

@ -36,14 +36,14 @@ in {
};
systemd.services.lidarr = let
lidarrUser = config.users.users.lidarr;
inherit (config.users.users) lidarr;
in
mkMerge [
{
serviceConfig = {
DynamicUser = mkForce false;
User = lidarrUser.name;
Group = lidarrUser.group;
User = lidarr.name;
Group = lidarr.group;
UMask = mkForce "0002";
};
}
@ -67,12 +67,12 @@ in {
sops.secrets."environment-file/lidarr" = {};
${namespace}.services.storage.impermanence.folders = let
lidarrUser = config.users.users.lidarr;
inherit (config.users.users) lidarr;
in [
{
directory = "/var/lib/lidarr";
user = lidarrUser.name;
group = lidarrUser.group;
user = lidarr.name;
group = lidarr.group;
mode = "700";
}
];

View file

@ -30,12 +30,12 @@ in {
};
${namespace}.services.storage.impermanence.folders = let
ombiUser = config.users.users.ombi;
inherit (config.users.users) ombi;
in [
{
directory = "/var/lib/ombi";
user = ombiUser.name;
group = ombiUser.group;
user = ombi.name;
group = ombi.group;
mode = "700";
}
];

View file

@ -36,14 +36,14 @@ in {
};
systemd.services.prowlarr = let
prowlarrUser = config.users.users.prowlarr;
inherit (config.users.users) prowlarr;
in
mkMerge [
{
serviceConfig = {
DynamicUser = mkForce false;
User = prowlarrUser.name;
Group = prowlarrUser.group;
User = prowlarr.name;
Group = prowlarr.group;
UMask = mkForce "0002";
};
}
@ -67,12 +67,12 @@ in {
sops.secrets."environment-file/prowlarr" = {};
${namespace}.services.storage.impermanence.folders = let
prowlarrUser = config.users.users.prowlarr;
inherit (config.users.users) prowlarr;
in [
{
directory = "/var/lib/prowlarr";
user = prowlarrUser.name;
group = prowlarrUser.group;
user = prowlarr.name;
group = prowlarr.group;
mode = "700";
}
];

View file

@ -36,14 +36,14 @@ in {
};
systemd.services.radarr = let
radarrUser = config.users.users.radarr;
inherit (config.users.users) radarr;
in
mkMerge [
{
serviceConfig = {
DynamicUser = mkForce false;
User = radarrUser.name;
Group = radarrUser.group;
User = radarr.name;
Group = radarr.group;
UMask = mkForce "0002";
};
}
@ -67,12 +67,12 @@ in {
sops.secrets."environment-file/radarr" = {};
${namespace}.services.storage.impermanence.folders = let
radarrUser = config.users.users.radarr;
inherit (config.users.users) radarr;
in [
{
directory = "/var/lib/radarr";
user = radarrUser.name;
group = radarrUser.group;
user = radarr.name;
group = radarr.group;
mode = "700";
}
];

View file

@ -23,7 +23,7 @@ in {
};
systemd.services.seerr = let
seerrUser = config.users.users.seerr;
inherit (config.users.users) seerr;
dbIp = resolveDatabaseIP networkCfg.devices pgCfg.databases "seerr";
in
mkMerge [
@ -38,8 +38,8 @@ in {
serviceConfig = {
DynamicUser = mkForce false;
User = seerrUser.name;
Group = seerrUser.group;
User = seerr.name;
Group = seerr.group;
EnvironmentFile = config.sops.secrets."environment-file/seerr".path;
};
}
@ -62,12 +62,12 @@ in {
sops.secrets."environment-file/seerr" = {};
${namespace}.services.storage.impermanence.folders = let
seerrUser = config.users.users.seerr;
inherit (config.users.users) seerr;
in [
{
directory = "/var/lib/seerr";
user = seerrUser.name;
group = seerrUser.group;
user = seerr.name;
group = seerr.group;
mode = "700";
}
];

View file

@ -36,14 +36,14 @@ in {
};
systemd.services.sonarr = let
sonarrUser = config.users.users.sonarr;
inherit (config.users.users) sonarr;
in
mkMerge [
{
serviceConfig = {
DynamicUser = mkForce false;
User = sonarrUser.name;
Group = sonarrUser.group;
User = sonarr.name;
Group = sonarr.group;
UMask = mkForce "0002";
};
}
@ -67,12 +67,12 @@ in {
sops.secrets."environment-file/sonarr" = {};
${namespace}.services.storage.impermanence.folders = let
sonarrUser = config.users.users.sonarr;
inherit (config.users.users) sonarr;
in [
{
directory = "/var/lib/sonarr";
user = sonarrUser.name;
group = sonarrUser.group;
user = sonarr.name;
group = sonarr.group;
mode = "700";
}
];

View file

@ -123,9 +123,21 @@ in {
};
};
${namespace}.services.storage.impermanence.folders = [
"/var/spool/slurmctld"
"/var/spool/slurmd"
${namespace}.services.storage.impermanence.folders = let
inherit (config.users.users) slurm;
in [
{
directory = "/var/spool/slurmctld";
user = slurm.name;
group = slurm.group;
mode = "700";
}
{
directory = "/var/spool/slurmd";
user = slurm.name;
group = slurm.group;
mode = "700";
}
];
};
}

View file

@ -43,6 +43,15 @@ in {
networking.firewall.allowedTCPPorts = [port];
${namespace}.services.storage.impermanence.folders = ["/var/lib/uptime-kuma"];
${namespace}.services.storage.impermanence.folders = let
inherit (config.users.users) uptime-kuma;
in [
{
directory = "/var/lib/uptime-kuma";
user = uptime-kuma.name;
group = uptime-kuma.group;
mode = "700";
}
];
};
}

View file

@ -64,5 +64,16 @@ in {
sops.secrets."vaultwarden" = {};
networking.firewall.allowedTCPPorts = [port];
${namespace}.services.storage.impermanence.folders = let
inherit (config.users.users) vaultwarden;
in [
{
directory = "/var/lib/vaultwarden";
user = vaultwarden.name;
group = vaultwarden.group;
mode = "700";
}
];
};
}

View file

@ -102,6 +102,15 @@ in {
sops.secrets."github/runner" = {};
${namespace}.services.storage.impermanence.folders = ["/var/lib/github-runner"];
${namespace}.services.storage.impermanence.folders = let
inherit (config.users.users) github-runner;
in [
{
directory = "/var/lib/github-runner";
user = github-runner.name;
group = github-runner.group;
mode = "700";
}
];
};
}

View file

@ -19,6 +19,11 @@ in {
networking.networkmanager.enable = true;
${namespace}.services.storage.impermanence.folders = ["/etc/NetworkManager/system-connections"];
${namespace}.services.storage.impermanence.folders = [
{
directory = "/etc/NetworkManager/system-connections";
mode = "700";
}
];
};
}

View file

@ -19,6 +19,13 @@ in {
useRoutingFeatures = "server";
};
${namespace}.services.storage.impermanence.folders = ["/var/lib/tailscale"];
${namespace}.services.storage.impermanence.folders = [
{
directory = "/var/lib/tailscale";
user = "tailscale";
group = "tailscale";
mode = "700";
}
];
};
}

View file

@ -37,8 +37,15 @@ in {
"cloudflare/acme-token" = {};
};
${namespace}.services.storage.impermanence.folders = [
"/var/lib/acme"
${namespace}.services.storage.impermanence.folders = let
inherit (config.users.users) acme;
in [
{
directory = "/var/lib/acme";
user = acme.name;
group = acme.group;
mode = "700";
}
];
};
}

View file

@ -51,8 +51,16 @@ in {
};
${namespace}.services.storage.impermanence.folders = mkMerge [
["/var/lib/nfs"]
(mkIf (cfg.shares != []) (cfg.shares |> map (s: "/mnt/nfs/${s.name}")))
[
{
directory = "/var/lib/nfs";
mode = "700";
}
]
(mkIf (cfg.shares != []) (cfg.shares |> map (s: {
directory = "/mnt/nfs/${s.name}";
mode = "700";
})))
];
networking.firewall.allowedTCPPorts = [2049];

View file

@ -91,8 +91,15 @@ in {
};
};
${namespace}.services.storage.impermanence.folders = [
"/var/lib/postgresql"
${namespace}.services.storage.impermanence.folders = let
inherit (config.users.users) postgres;
in [
{
directory = "/var/lib/postgresql";
user = postgres.name;
group = postgres.group;
mode = "700";
}
];
systemd.services.postgresql-setup.postStart = ''

View file

@ -71,8 +71,15 @@ in {
};
};
${namespace}.services.storage.impermanence.folders = [
"/var/lib/pgbouncer"
${namespace}.services.storage.impermanence.folders = let
inherit (config.users.users) pgbouncer;
in [
{
directory = "/var/lib/pgbouncer";
user = pgbouncer.name;
group = pgbouncer.group;
mode = "700";
}
];
});
}

View file

@ -75,8 +75,16 @@ in {
};
${namespace}.services.storage.impermanence.folders = mkMerge [
["/var/lib/samba"]
(mkIf (cfg.shares != []) (cfg.shares |> map (s: "/mnt/samba/${s}")))
[
{
directory = "/var/lib/samba";
mode = "700";
}
]
(mkIf (cfg.shares != []) (cfg.shares |> map (s: {
directory = "/mnt/samba/${s}";
mode = "700";
})))
];
};
}

View file

@ -74,7 +74,19 @@ in {
systemd.services.syncthing.environment.STNODEFAULTFOLDER = "true";
${namespace}.services.storage.impermanence.folders = mkIf cfg.enable (
["/mnt/syncthing"] ++ (builtins.attrNames cfg.shares |> map (k: "/mnt/syncthing/${k}"))
[
{
directory = "/mnt/syncthing";
user = "c4patino";
group = "syncthing";
mode = "700";
}
] ++ (builtins.attrNames cfg.shares |> map (k: {
directory = "/mnt/syncthing/${k}";
user = "c4patino";
group = "syncthing";
mode = "700";
}))
);
};
}

View file

@ -48,6 +48,11 @@ in {
networking.firewall.allowedTCPPorts = [2376];
${namespace}.services.storage.impermanence.folders = ["/var/lib/docker"];
${namespace}.services.storage.impermanence.folders = [
{
directory = "/var/lib/docker";
mode = "700";
}
];
};
}

View file

@ -30,6 +30,11 @@ in {
podman = enabled;
};
${namespace}.services.storage.impermanence.folders = ["/var/lib/containers"];
${namespace}.services.storage.impermanence.folders = [
{
directory = "/var/lib/containers";
mode = "700";
}
];
};
}