proper mountpoint testing
This commit is contained in:
parent
265d5ff5fb
commit
888fbc3649
17
flake.nix
17
flake.nix
@ -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} = {
|
systemd.services.${serviceName} = {
|
||||||
unitConfig.RequiresMountsFor = dirs;
|
wants = [ "${serviceName}_mounts.service" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
{
|
{
|
||||||
|
pkgs,
|
||||||
config,
|
config,
|
||||||
service_configs,
|
service_configs,
|
||||||
username,
|
username,
|
||||||
@ -7,7 +8,7 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
(serviceMountDeps "gitea" [ config.services.gitea.stateDir ])
|
(serviceMountDeps "gitea" [ config.services.gitea.stateDir ] pkgs)
|
||||||
];
|
];
|
||||||
|
|
||||||
services.gitea = {
|
services.gitea = {
|
||||||
|
|||||||
@ -8,8 +8,8 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
(serviceMountDeps "immich-server" [ config.services.immich.mediaLocation ])
|
(serviceMountDeps "immich-server" [ config.services.immich.mediaLocation ] pkgs)
|
||||||
(serviceMountDeps "immich-machine-learning" [ config.services.immich.mediaLocation ])
|
(serviceMountDeps "immich-machine-learning" [ config.services.immich.mediaLocation ] pkgs)
|
||||||
];
|
];
|
||||||
|
|
||||||
services.immich = {
|
services.immich = {
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
(serviceMountDeps "jellyfin" [
|
(serviceMountDeps "jellyfin" [
|
||||||
config.services.jellyfin.dataDir
|
config.services.jellyfin.dataDir
|
||||||
config.services.jellyfin.cacheDir
|
config.services.jellyfin.cacheDir
|
||||||
])
|
] pkgs)
|
||||||
];
|
];
|
||||||
|
|
||||||
services.jellyfin = {
|
services.jellyfin = {
|
||||||
|
|||||||
@ -11,7 +11,7 @@
|
|||||||
imports = [
|
imports = [
|
||||||
(serviceMountDeps "minecraft-server-${service_configs.minecraft.server_name}" [
|
(serviceMountDeps "minecraft-server-${service_configs.minecraft.server_name}" [
|
||||||
"${service_configs.minecraft.parent_dir}/${service_configs.minecraft.server_name}"
|
"${service_configs.minecraft.parent_dir}/${service_configs.minecraft.server_name}"
|
||||||
])
|
] pkgs)
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.systemPackages = [
|
environment.systemPackages = [
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
(serviceMountDeps "postgresql" [ config.services.postgresql.dataDir ])
|
(serviceMountDeps "postgresql" [ config.services.postgresql.dataDir ] pkgs)
|
||||||
];
|
];
|
||||||
|
|
||||||
services.postgresql = {
|
services.postgresql = {
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
service_configs.torrents_path
|
service_configs.torrents_path
|
||||||
config.services.qbittorrent.serverConfig.Preferences.Downloads.TempPath
|
config.services.qbittorrent.serverConfig.Preferences.Downloads.TempPath
|
||||||
"/var/lib/qBittorrent/qBittorrent"
|
"/var/lib/qBittorrent/qBittorrent"
|
||||||
])
|
] pkgs)
|
||||||
];
|
];
|
||||||
|
|
||||||
# network namespace that is proxied through mullvad
|
# network namespace that is proxied through mullvad
|
||||||
|
|||||||
@ -16,7 +16,7 @@ in
|
|||||||
service_configs.slskd.base
|
service_configs.slskd.base
|
||||||
# service_configs.slskd.downloads
|
# service_configs.slskd.downloads
|
||||||
# service_configs.slskd.incomplete
|
# service_configs.slskd.incomplete
|
||||||
])
|
] pkgs)
|
||||||
];
|
];
|
||||||
|
|
||||||
users.groups."music" = { };
|
users.groups."music" = { };
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user