proper mountpoint testing

This commit is contained in:
Simon Gardling 2025-07-10 01:31:52 -07:00
parent 265d5ff5fb
commit 888fbc3649
Signed by: titaniumtown
GPG Key ID: 9AB28AC10ECE533D
8 changed files with 24 additions and 10 deletions

View File

@ -135,9 +135,22 @@
};
};
serviceMountDeps = serviceName: dirs: {
serviceMountDeps = serviceName: dirs: pkgs: {
systemd.services."${serviceName}_mounts" = {
unitConfig.Wants = "zfs.target";
serviceConfig = {
Type = "oneshot";
RemainAfterExit = true;
ExecStart =
let
lib = nixpkgs.lib;
in
"${lib.getExe pkgs.bash} -c \"${lib.getExe pkgs.zfs} get mounted | ${lib.getExe pkgs.gnugrep} yes | ${lib.getExe pkgs.gawk} '{print $1}' | while read i; do ${lib.getExe pkgs.zfs} get mountpoint \$i | ${lib.getExe pkgs.gawk} 'FNR==2 {print \$3}'; done | ${lib.getExe pkgs.gnugrep} '${lib.strings.concatStringsSep "\|" dirs}' | ${pkgs.coreutils}/bin/wc -l | ${lib.getExe pkgs.gnugrep} -q ${toString (lib.length dirs)}\"";
};
};
systemd.services.${serviceName} = {
unitConfig.RequiresMountsFor = dirs;
wants = [ "${serviceName}_mounts.service" ];
};
};
in

View File

@ -1,4 +1,5 @@
{
pkgs,
config,
service_configs,
username,
@ -7,7 +8,7 @@
}:
{
imports = [
(serviceMountDeps "gitea" [ config.services.gitea.stateDir ])
(serviceMountDeps "gitea" [ config.services.gitea.stateDir ] pkgs)
];
services.gitea = {

View File

@ -8,8 +8,8 @@
}:
{
imports = [
(serviceMountDeps "immich-server" [ config.services.immich.mediaLocation ])
(serviceMountDeps "immich-machine-learning" [ config.services.immich.mediaLocation ])
(serviceMountDeps "immich-server" [ config.services.immich.mediaLocation ] pkgs)
(serviceMountDeps "immich-machine-learning" [ config.services.immich.mediaLocation ] pkgs)
];
services.immich = {

View File

@ -12,7 +12,7 @@
(serviceMountDeps "jellyfin" [
config.services.jellyfin.dataDir
config.services.jellyfin.cacheDir
])
] pkgs)
];
services.jellyfin = {

View File

@ -11,7 +11,7 @@
imports = [
(serviceMountDeps "minecraft-server-${service_configs.minecraft.server_name}" [
"${service_configs.minecraft.parent_dir}/${service_configs.minecraft.server_name}"
])
] pkgs)
];
environment.systemPackages = [

View File

@ -8,7 +8,7 @@
}:
{
imports = [
(serviceMountDeps "postgresql" [ config.services.postgresql.dataDir ])
(serviceMountDeps "postgresql" [ config.services.postgresql.dataDir ] pkgs)
];
services.postgresql = {

View File

@ -13,7 +13,7 @@
service_configs.torrents_path
config.services.qbittorrent.serverConfig.Preferences.Downloads.TempPath
"/var/lib/qBittorrent/qBittorrent"
])
] pkgs)
];
# network namespace that is proxied through mullvad

View File

@ -16,7 +16,7 @@ in
service_configs.slskd.base
# service_configs.slskd.downloads
# service_configs.slskd.incomplete
])
] pkgs)
];
users.groups."music" = { };