From ccf442b0996acf186e1da756378e455e489d66b3 Mon Sep 17 00:00:00 2001 From: Kiara Grouwstra Date: Fri, 1 Aug 2025 20:38:43 +0200 Subject: [PATCH] reproduce infinite recursion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit the challenge here seems to stem from a mutual dependency between imports and `inputs`: ``` at /nix/store/zid48nap5bh52n8d2gc5kbnzhxy3cm0k-source/deployment/data-model.nix:31:7: 30| staticModules = [ 31| inputs.nixops4.modules.nixops4Deployment.default | ^ 32| … while calling anonymous lambda at /nix/store/hjb1rqv2mfs5ny47amj2gsc8xk05x5g6-source/lib/modules.nix:513:35: 512| context = name: ''while evaluating the module argument `${name}' in "${key}":''; 513| extraArgs = mapAttrs (name: _: | ^ 514| addErrorContext (context name) … while evaluating the module argument `inputs' in "/nix/store/zid48nap5bh52n8d2gc5kbnzhxy3cm0k-source/deployment/data-model.nix": … while evaluating the attribute 'inputs' at /nix/store/zid48nap5bh52n8d2gc5kbnzhxy3cm0k-source/deployment/check/data-model/deployment.nix:15:17: 14| specialArgs = { 15| inherit inputs; | ^ 16| }; … from call site at /nix/store/zid48nap5bh52n8d2gc5kbnzhxy3cm0k-source/deployment/check/data-model/deployment.nix:15:17: 14| specialArgs = { 15| inherit inputs; | ^ 16| }; ``` --- deployment/check/data-model/deployment.nix | 75 ++++++++++++------- .../check/data-model/flake-under-test.nix | 4 +- deployment/check/data-model/nixosTest.nix | 6 +- 3 files changed, 56 insertions(+), 29 deletions(-) diff --git a/deployment/check/data-model/deployment.nix b/deployment/check/data-model/deployment.nix index 14a35ac6..6e81b46c 100644 --- a/deployment/check/data-model/deployment.nix +++ b/deployment/check/data-model/deployment.nix @@ -2,35 +2,60 @@ inputs, sources, lib, - providers, ... }: let inherit (import ./constants.nix) targetMachines pathToRoot pathFromRoot; -in - -{ - providers = { - inherit (inputs.nixops4.modules.nixops4Provider) local; - }; - - resources = lib.genAttrs targetMachines (nodeName: { - type = providers.local.exec; - - imports = [ - inputs.nixops4-nixos.modules.nixops4Resource.nixos - ../common/targetResource.nix - ]; - - _module.args = { inherit inputs sources; }; - - inherit nodeName pathToRoot pathFromRoot; - - nixos.module = - { pkgs, ... }: - { - environment.systemPackages = [ pkgs.${nodeName} ]; + eval = + module: + (lib.evalModules { + specialArgs = { + inherit inputs; }; - }); + modules = [ + module + ../../data-model.nix + ]; + }).config; + fediversity = eval ( + { ... }: + { + config = { + environments.single-nixos-vm = + { ... }: + { + implementation = requests: { + input = requests; + output = + { providers, ... }: + { + providers = { + inherit (inputs.nixops4.modules.nixops4Provider) local; + }; + resources = lib.genAttrs targetMachines (nodeName: { + type = providers.local.exec; + imports = [ + inputs.nixops4-nixos.modules.nixops4Resource.nixos + ../../data-model.nix + ../../function.nix + ../common/targetResource.nix + ]; + _module.args = { inherit inputs sources; }; + inherit nodeName pathToRoot pathFromRoot; + nixos.module = + { pkgs, ... }: + { + environment.systemPackages = [ pkgs.${nodeName} ]; + }; + }); + }; + }; + }; + }; + } + ); +in +fediversity.environments.single-nixos-vm.deployment { + enable = true; } diff --git a/deployment/check/data-model/flake-under-test.nix b/deployment/check/data-model/flake-under-test.nix index b9e3fb4b..94d37ab8 100644 --- a/deployment/check/data-model/flake-under-test.nix +++ b/deployment/check/data-model/flake-under-test.nix @@ -13,8 +13,8 @@ inputs.nixops4.modules.flake.default ]; - nixops4Deployments.check-deployment-basic = { - imports = [ ./deployment/check/basic/deployment.nix ]; + nixops4Deployments.check-deployment-model = { + imports = [ ./deployment/check/data-model/deployment.nix ]; _module.args = { inherit inputs sources; }; }; } diff --git a/deployment/check/data-model/nixosTest.nix b/deployment/check/data-model/nixosTest.nix index 93c8ad23..50f41039 100644 --- a/deployment/check/data-model/nixosTest.nix +++ b/deployment/check/data-model/nixosTest.nix @@ -3,9 +3,11 @@ { _class = "nixosTest"; - name = "deployment-basic"; + name = "deployment-model"; sourceFileset = lib.fileset.unions [ + ../../data-model.nix + ../../function.nix ./constants.nix ./deployment.nix ]; @@ -39,7 +41,7 @@ cowsay.fail("cowsay 1>&2") with subtest("Run the deployment"): - deployer.succeed("nixops4 apply check-deployment-basic --show-trace --no-interactive 1>&2") + deployer.succeed("nixops4 apply check-deployment-model --show-trace --no-interactive 1>&2") with subtest("Check the deployment"): hello.succeed("hello 1>&2")