warn if reserved inputs provided

This commit is contained in:
do butterflies cry? 2026-03-14 21:01:02 +10:00
parent 3e29615db9
commit b1b1743414
Signed by: cry
GPG key ID: F68745A836CA0412

View file

@ -4,23 +4,55 @@
systems,
...
}: let
inherit
(builtins)
attrNames
concatStringsSep
filter
length
removeAttrs
warn
;
inherit (inputs.nixpkgs) lib;
in {
# snow.flake
flake = flakeInputs: root: let
snowflake = lib.evalModules {
class = "snowflake";
# XXX: TODO: abort if inputs contains reserved names
specialArgs =
(flakeInputs
// {
inherit (this) snow;
inherit systems root;
inputs = flakeInputs;
})
# XXX: TODO:
# |> (x: builtins.removeAttrs x ["self" "nodes"]);
|> (x: builtins.removeAttrs x ["self"]);
specialArgs = let
reservedInputs = {
inherit (this) snow;
inherit systems root;
inputs = flakeInputs;
};
warnIfReserved = let
getReservedNames = names:
reservedInputs
|> attrNames
|> filter (name: names?${name});
reservedNames =
flakeInputs
|> attrNames
|> getReservedNames;
in
(length reservedNames == 0)
|| warn ''
[snow] Your `flake.nix` declares inputs using reserved names!
[snow] These will be accessible only via `inputs.''${NAME}`
[snow] Please rename the following:
[snow] ${concatStringsSep reservedNames ", "}
''
true;
in
assert warnIfReserved;
flakeInputs
// reservedInputs
# XXX: TODO:
# |> (x: builtins.removeAttrs x ["self" "nodes"]);
|> (x: removeAttrs x ["self"]);
modules = [
./module.nix