Compare commits

...

3 Commits

Author SHA1 Message Date
006652da36 fix minecraft test 2025-08-21 05:12:31 -04:00
3557a2e6c8 use lib.serviceDependZpool 2025-08-21 05:06:03 -04:00
df8a22760c add lib.serviceDependZpool 2025-08-21 05:02:05 -04:00
11 changed files with 34 additions and 0 deletions

21
lib.nix
View File

@@ -78,5 +78,26 @@ inputs.nixpkgs.lib.extend (
vpnNamespace = "wg"; vpnNamespace = "wg";
}; };
}; };
serviceDependZpool =
serviceName: zpool:
{ config, ... }:
{
config = lib.mkIf (zpool != "") {
systemd.services.${serviceName} = {
wants = [ "zfs-import-${zpool}.service" ];
after = [ "zfs-import-${zpool}.service" ];
requires = [ "zfs-import-${zpool}.service" ];
};
# assert that the pool is even enabled
assertions = [
{
assertion = builtins.elem zpool config.boot.zfs.extraPools;
message = "${zpool} is not enabled in `boot.zfs.extraPools`";
}
];
};
};
} }
) )

View File

@@ -15,6 +15,8 @@
service_configs.vaultwarden.path service_configs.vaultwarden.path
config.services.vaultwarden.backupDir config.services.vaultwarden.backupDir
]) ])
(lib.serviceDependZpool "vaultwarden" service_configs.zpool_ssds)
(lib.serviceDependZpool "backup-vaultwarden" service_configs.zpool_ssds)
]; ];
services.vaultwarden = { services.vaultwarden = {

View File

@@ -12,6 +12,7 @@
config.services.caddy.dataDir config.services.caddy.dataDir
service_configs.https.data_dir service_configs.https.data_dir
]) ])
(lib.serviceDependZpool "caddy" service_configs.zpool_ssds)
]; ];
services.caddy = { services.caddy = {

View File

@@ -9,6 +9,7 @@
{ {
imports = [ imports = [
(lib.serviceMountDeps "gitea" [ config.services.gitea.stateDir ]) (lib.serviceMountDeps "gitea" [ config.services.gitea.stateDir ])
(lib.serviceDependZpool "gitea" service_configs.zpool_ssds)
]; ];
services.gitea = { services.gitea = {

View File

@@ -10,6 +10,8 @@
imports = [ imports = [
(lib.serviceMountDeps "immich-server" [ config.services.immich.mediaLocation ]) (lib.serviceMountDeps "immich-server" [ config.services.immich.mediaLocation ])
(lib.serviceMountDeps "immich-machine-learning" [ config.services.immich.mediaLocation ]) (lib.serviceMountDeps "immich-machine-learning" [ config.services.immich.mediaLocation ])
(lib.serviceDependZpool "immich-server" service_configs.zpool_ssds)
(lib.serviceDependZpool "immich-machine-learning" service_configs.zpool_ssds)
]; ];
services.immich = { services.immich = {

View File

@@ -12,6 +12,7 @@
config.services.jellyfin.dataDir config.services.jellyfin.dataDir
config.services.jellyfin.cacheDir config.services.jellyfin.cacheDir
]) ])
(lib.serviceDependZpool "jellyfin" service_configs.zpool_ssds)
]; ];
services.jellyfin = { services.jellyfin = {

View File

@@ -11,6 +11,7 @@
(lib.serviceMountDeps "minecraft-server-${service_configs.minecraft.server_name}" [ (lib.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}"
]) ])
(lib.serviceDependZpool "minecraft-server-${service_configs.minecraft.server_name}" service_configs.zpool_ssds)
]; ];
environment.systemPackages = [ environment.systemPackages = [

View File

@@ -9,6 +9,7 @@
{ {
imports = [ imports = [
(lib.serviceMountDeps "postgresql" [ config.services.postgresql.dataDir ]) (lib.serviceMountDeps "postgresql" [ config.services.postgresql.dataDir ])
(lib.serviceDependZpool "postgresql" service_configs.zpool_ssds)
]; ];
services.postgresql = { services.postgresql = {

View File

@@ -14,6 +14,7 @@
"${config.services.qbittorrent.profileDir}/qBittorrent" "${config.services.qbittorrent.profileDir}/qBittorrent"
]) ])
(lib.vpnNamespaceOpenPort config.services.qbittorrent.webuiPort "qbittorrent") (lib.vpnNamespaceOpenPort config.services.qbittorrent.webuiPort "qbittorrent")
(lib.serviceDependZpool "qbittorrent" service_configs.zpool_hdds)
]; ];
services.qbittorrent = { services.qbittorrent = {

View File

@@ -16,6 +16,8 @@ in
service_configs.slskd.downloads service_configs.slskd.downloads
service_configs.slskd.incomplete service_configs.slskd.incomplete
]) ])
(lib.serviceDependZpool "slskd" service_configs.zpool_ssds)
(lib.serviceDependZpool "slskd" service_configs.zpool_hdds)
]; ];
users.groups."music" = { }; users.groups."music" = { };

View File

@@ -32,6 +32,7 @@ let
https = { https = {
domain = "test.local"; domain = "test.local";
}; };
zpool_ssds = "";
}; };
username = "testuser"; username = "testuser";
}) })