From 454936336f2c1b2c54791967ff5837f5b57a0299 Mon Sep 17 00:00:00 2001 From: Johannes Kirschbauer Date: Tue, 1 Jul 2025 17:35:04 +0200 Subject: [PATCH] clanServices: add test to ensure nixosModule is imported --- .../distributed-service/inventory-adapter.nix | 7 +-- .../distributed-service/tests/default.nix | 1 + .../tests/machine_imports.nix | 49 +++++++++++++++++++ 3 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 lib/modules/inventory/distributed-service/tests/machine_imports.nix diff --git a/lib/modules/inventory/distributed-service/inventory-adapter.nix b/lib/modules/inventory/distributed-service/inventory-adapter.nix index b21dcc31c..1c7e515dd 100644 --- a/lib/modules/inventory/distributed-service/inventory-adapter.nix +++ b/lib/modules/inventory/distributed-service/inventory-adapter.nix @@ -110,12 +110,13 @@ in } ) { } importedModuleWithInstances; + # servicesEval.config.mappedServices.self-A.result.final.jon.nixosModule allMachines = lib.mapAttrs (machineName: _: { # This is the list of nixosModules for each machine machineImports = lib.foldlAttrs ( - acc: _module_ident: eval: - acc ++ [ eval.config.result.final.${machineName}.nixosModule or { } ] - ) [ ] importedModulesEvaluated; + acc: _module_ident: serviceModule: + acc ++ [ serviceModule.result.final.${machineName}.nixosModule or { } ] + ) [ ] servicesEval.config.mappedServices; }) inventory.machines or { }; evalServices = diff --git a/lib/modules/inventory/distributed-service/tests/default.nix b/lib/modules/inventory/distributed-service/tests/default.nix index c8a3e1583..9164c2e1d 100644 --- a/lib/modules/inventory/distributed-service/tests/default.nix +++ b/lib/modules/inventory/distributed-service/tests/default.nix @@ -288,6 +288,7 @@ in ]; }; + machine_imports = import ./machine_imports.nix { inherit lib clanLib; }; per_machine_args = import ./per_machine_args.nix { inherit lib callInventoryAdapter; }; per_instance_args = import ./per_instance_args.nix { inherit lib callInventoryAdapter; }; nested = import ./nested_services { inherit lib clanLib; }; diff --git a/lib/modules/inventory/distributed-service/tests/machine_imports.nix b/lib/modules/inventory/distributed-service/tests/machine_imports.nix new file mode 100644 index 000000000..a0d364d1a --- /dev/null +++ b/lib/modules/inventory/distributed-service/tests/machine_imports.nix @@ -0,0 +1,49 @@ +{ lib, clanLib }: +let + clan = clanLib.clan { + self = { }; + directory = ./.; + + machines.jon = { }; + machines.sara = { }; + # A module that adds exports perMachine + modules.A = + { ... }: + { + manifest.name = "A"; + roles.peer.perInstance = + { ... }: + { + nixosModule = { + options.bar = lib.mkOption { + default = 1; + }; + }; + }; + roles.server = { }; + perMachine = + { ... }: + { + nixosModule = { + options.foo = lib.mkOption { + default = 1; + }; + }; + }; + }; + inventory.instances.A = { + module.input = "self"; + roles.peer.tags.all = { }; + }; + }; +in +{ + test_1 = { + inherit clan; + expr = { inherit (clan.config.clanInternals.machines.x86_64-linux.jon.config) bar foo; }; + expected = { + foo = 1; + bar = 1; + }; + }; +}