diff --git a/nix/lib.nix b/nix/lib.nix index 524df79a7..ed780f41f 100644 --- a/nix/lib.nix +++ b/nix/lib.nix @@ -13,7 +13,9 @@ let aspect // { __functor = self: ctx: { - includes = builtins.filter (x: x != { }) (map (apply ctx) (builtins.filter isFn self.includes)); + includes = builtins.filter (x: x != { }) ( + map (apply ctx) (builtins.filter isFn (self.includes or [ ])) + ); }; }; @@ -35,7 +37,7 @@ let self: { class, aspect-chain }: { - includes = map (applyStatics { inherit class aspect-chain; }) self.includes; + includes = map (applyStatics { inherit class aspect-chain; }) (self.includes or [ ]); }; }; diff --git a/templates/ci/flake.lock b/templates/ci/flake.lock index 7c09f0841..c361ed32c 100644 --- a/templates/ci/flake.lock +++ b/templates/ci/flake.lock @@ -17,11 +17,11 @@ }, "flake-aspects": { "locked": { - "lastModified": 1771395573, - "narHash": "sha256-bcCOG2CW23/Eww/zULJf1xd0Shz2zS4c2AJWwLALyJ8=", + "lastModified": 1772393050, + "narHash": "sha256-lu8y40rGSps8U3ak0xhieLxSA4Dv/fJiPGkknjteEfk=", "owner": "vic", "repo": "flake-aspects", - "rev": "8297f3bc41ad79b9f01d56d0dd92f7aac51bacfb", + "rev": "d9502abaa6acc3a444b45a9df729d22f5ccff33c", "type": "github" }, "original": { diff --git a/templates/ci/modules/features/provides-parametric.nix b/templates/ci/modules/features/provides-parametric.nix new file mode 100644 index 000000000..be801a475 --- /dev/null +++ b/templates/ci/modules/features/provides-parametric.nix @@ -0,0 +1,45 @@ +{ denTest, inputs, ... }: +{ + + flake.tests.provides-parametric = { + + test-parametric-inside-provides = denTest ( + { + den, + ns, + igloo, + ... + }: + { + den.hosts.x86_64-linux.igloo.users.tux = { }; + + imports = [ (inputs.den.namespace "ns" false) ]; + + ns.foo = den.lib.parametric { }; + ns.bar.provides.baz = den.lib.parametric { }; + ns.a = den.lib.parametric { + provides.b = den.lib.parametric { }; + provides.c = den.lib.parametric { }; + provides.d = den.lib.parametric { + provides.e = den.lib.parametric { nixos.networking.hostName = "pinguino"; }; + }; + }; + + den.aspects.igloo.includes = [ + ns.foo + ns.bar._.baz + ns.a + ns.a._.b + ns.a._.c + ns.a._.d + ns.a._.d._.e + ]; + + expr = igloo.networking.hostName; + expected = "pinguino"; + } + ); + + }; + +}