diff --git a/pkgs/lib/strings-with-deps.nix b/pkgs/lib/strings-with-deps.nix new file mode 100644 index 00000000000..5f6cafaa67a --- /dev/null +++ b/pkgs/lib/strings-with-deps.nix @@ -0,0 +1,48 @@ +args: + with args; + with lib; + let + inherit (builtins) + head tail isList; +rec { + +/* + let shelllib = rec { + a= { + text = "aaaa"; + deps = [b c]; + }; + b = { + text = "b"; + }; + c = { + text = "c"; + deps = []; + }; + }; + in + + [textClosure [shelllib.a] + textclosure shelllib.a]; + + +*/ + + textClosureDupList = arg: + ( + if isList arg then + textClosureDupList {text = ""; deps = arg;} + else + (if (arg ? deps) then + map textClosureDupList arg.deps + else []) + ++ [arg] + ); + + textClosureList = arg: uniqList (textClosureDupList arg); + textClosure = arg: concatStringsSep " +" (textClosureList arg); + + noDepEntry = text : {inherit text;}; + FullDepEntry = text : deps: {inherit text args;}; +}