From f3c81f50954aad2c3d3bb33997e2f8d86bf9f3b2 Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Wed, 14 May 2025 17:03:23 +0200 Subject: [PATCH] feat(clanModules): add deprecation feature that generates a warning if the module is used --- clanModules/admin/roles/default.nix | 8 -------- lib/inventory/build-inventory/builder/default.nix | 12 ++++++++++++ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/clanModules/admin/roles/default.nix b/clanModules/admin/roles/default.nix index cc236459b..c799b6066 100644 --- a/clanModules/admin/roles/default.nix +++ b/clanModules/admin/roles/default.nix @@ -18,14 +18,6 @@ ../../root-password ]; config = { - - warnings = [ - '' - The admin module has been migrated from `clan.services` to `clan.instances` - See https://docs.clan.lol/manual/distributed-services for usage. - '' - ]; - users.users.root.openssh.authorizedKeys.keys = builtins.attrValues config.clan.admin.allowedKeys; }; } diff --git a/lib/inventory/build-inventory/builder/default.nix b/lib/inventory/build-inventory/builder/default.nix index 18b7bc22d..36177e917 100644 --- a/lib/inventory/build-inventory/builder/default.nix +++ b/lib/inventory/build-inventory/builder/default.nix @@ -107,12 +107,24 @@ let extraModules = map (s: if builtins.typeOf s == "string" then "${directory}/${s}" else s) ( globalExtraModules ++ machineExtraModules ++ roleServiceExtraModules ); + + features = + (clanLib.modules.getFrontmatter inventory.modules.${serviceName} serviceName).features or [ ]; + deprecationWarning = lib.optionalAttrs (builtins.elem "deprecated" features) { + warnings = [ + '' + The '${serviceName}' module has been migrated from `inventory.services` to `inventory.instances` + See https://docs.clan.lol/manual/distributed-services/ for usage. + '' + ]; + }; in if !(serviceConfig.enabled or true) then acc2 else if isInService then acc2 ++ [ + deprecationWarning { imports = roleModules ++ extraModules; clan.inventory.services.${serviceName}.${instanceName} = {