diff --git a/examples/_loader.nix b/examples/_loader.nix index aae71ca..64fd6e8 100644 --- a/examples/_loader.nix +++ b/examples/_loader.nix @@ -7,5 +7,6 @@ inputs.haumea.lib.load { src = ./.; inputs = { inherit inputs lib; + inherit (lib) configs flake; }; } diff --git a/src/configs/haumea.nix b/src/configs/haumea.nix index 80d0b34..87eea66 100644 --- a/src/configs/haumea.nix +++ b/src/configs/haumea.nix @@ -18,13 +18,14 @@ pop { inputs = { }; init = { src = ./.; - loader = haumea.lib.loaders.default; + loader = with haumea.lib; [ (matchers.nix loaders.default) ]; transformer = [ ]; inputs = { }; layout = "default"; }; mergedOutputs = { }; imports = [ ]; + loader = [ ]; outputs = { }; }; extension = self: super: { @@ -32,7 +33,7 @@ pop { l.removeAttrs (types.haumeaInit ({ src = self.init.src; - loader = self.init.loader; + loader = self.loader ++ self.init.loader; layout = self.init.layout; transformer = self.init.transformer ++ self.transformer; inputs = l.removeAttrs (self.init.inputs // self.inputs) [ "self" ]; @@ -85,6 +86,16 @@ pop { ) ); + addLoader = + defun + ( + with types; [ + (list any) + haumeaPop + ] + ) + (loader: extendPop self (self: super: { loader = super.loader ++ loader; })); + addNixOSMerge = defun ( diff --git a/src/configs/structAttrs.nix b/src/configs/structAttrs.nix index 501a9cf..94b212f 100644 --- a/src/configs/structAttrs.nix +++ b/src/configs/structAttrs.nix @@ -17,6 +17,7 @@ let haumeaPop = structAttrs.pop // rec { inputs = attrs any; + loader = list any; imports = list any; init = struct "haumea.load" { src = either path string; @@ -35,6 +36,7 @@ let addTransformer = function; addInputs = function; + addLoader = function; addMerge = function; addNixOSMerge = function; diff --git a/tests/_snapshots/haumea b/tests/_snapshots/haumea index 1aa40f0..f323640 100644 --- a/tests/_snapshots/haumea +++ b/tests/_snapshots/haumea @@ -3,6 +3,9 @@ data = { success = true; value = { + data = { + foo = "baz"; + }; editorconfig = { "*" = { charset = "utf-8"; diff --git a/tests/haumea/__data/data.nix b/tests/haumea/__data/data.nix new file mode 100644 index 0000000..ab1e5aa --- /dev/null +++ b/tests/haumea/__data/data.nix @@ -0,0 +1 @@ +with dmerge; merge { foo = "bar"; } { foo = "baz"; } diff --git a/tests/haumea/expr.nix b/tests/haumea/expr.nix index 5ca571c..fa5202e 100644 --- a/tests/haumea/expr.nix +++ b/tests/haumea/expr.nix @@ -44,12 +44,15 @@ let ); default = - ((haumea.setInit { + with inputs.haumea.lib; + (((haumea.setInit { src = ./__data; inputs = { lib = inputs.nixlib.lib; + dmerge = inputs.dmerge; }; - transformer = with inputs.haumea.lib.transformers; [ liftDefault ]; + transformer = [ transformers.liftDefault ]; + loader = [ ]; }).addMerge ( prev: @@ -61,7 +64,10 @@ let prev: with dmerge; merge prev { treefmt.formatter.prettier.includes = append [ "*.jsl" ]; } - ); + ) + ).addLoader + [ (matchers.nix loaders.scoped) ]; + inherit (builtins) deepSeq mapAttrs tryEval; in mapAttrs (_: x: tryEval (deepSeq x x)) {