diff --git a/TODO.md b/TODO.md index 5fff9a2..7a23e43 100755 --- a/TODO.md +++ b/TODO.md @@ -1,4 +1,7 @@ ## Next +- [ ] formalize how the snow flake system compiles outputs, this would remove the need for `mapNodes` +- [ ] groups should allow you to set node configuration defaults + - [ ] add `options.experimental` for snowflake - [ ] add `legacyImports` support diff --git a/cerulean/snow/default.nix b/cerulean/snow/default.nix index c1199a6..6993ff1 100644 --- a/cerulean/snow/default.nix +++ b/cerulean/snow/default.nix @@ -48,16 +48,22 @@ in class = "snowflake"; # TODO: abort if inputs contains reserved names specialArgs = - flakeInputs - // { - inherit root; - inherit systems; - inherit (this) snow; # please don't be infinite recursion... - inputs = flakeInputs; - }; + (flakeInputs + // { + inherit systems root; + inherit (this) snow; + inputs = flakeInputs; + }) + |> (x: builtins.removeAttrs x ["self" "nodes"]); modules = [ ./module.nix + ({config, ...}: { + _module.args = { + self = config; + nodes = config.nodes.nodes; + }; + }) ]; }; @@ -86,7 +92,7 @@ in userArgs = nodes.args // node.args; ceruleanArgs = { - inherit systems root base node; + inherit systems root base nodes node; inherit (node) system; inherit (this) snow; hostname = name;