summaryrefslogtreecommitdiff
path: root/lib/strings-with-deps.nix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/strings-with-deps.nix')
-rw-r--r--lib/strings-with-deps.nix62
1 files changed, 45 insertions, 17 deletions
diff --git a/lib/strings-with-deps.nix b/lib/strings-with-deps.nix
index e22e19def581..6322cad11995 100644
--- a/lib/strings-with-deps.nix
+++ b/lib/strings-with-deps.nix
@@ -125,30 +125,58 @@ rec {
- Ordering the dependent phases of `system.userActivationScripts`
For further examples see: [NixOS activation script](https://nixos.org/manual/nixos/stable/#sec-activation-script)
-
*/
- textClosureList = predefined: arg:
+ textClosureList =
+ predefined: arg:
let
- f = done: todo:
- if todo == [] then {result = []; inherit done;}
+ f =
+ done: todo:
+ if todo == [ ] then
+ {
+ result = [ ];
+ inherit done;
+ }
else
- let entry = head todo; in
+ let
+ entry = head todo;
+ in
if isAttrs entry then
- let x = f done entry.deps;
- y = f x.done (tail todo);
- in { result = x.result ++ [entry.text] ++ y.result;
- done = y.done;
- }
- else if done ? ${entry} then f done (tail todo)
- else f (done // listToAttrs [{name = entry; value = 1;}]) ([predefined.${entry}] ++ tail todo);
- in (f {} arg).result;
+ let
+ x = f done entry.deps;
+ y = f x.done (tail todo);
+ in
+ {
+ result = x.result ++ [ entry.text ] ++ y.result;
+ done = y.done;
+ }
+ else if done ? ${entry} then
+ f done (tail todo)
+ else
+ f (
+ done
+ // listToAttrs [
+ {
+ name = entry;
+ value = 1;
+ }
+ ]
+ ) ([ predefined.${entry} ] ++ tail todo);
+ in
+ (f { } arg).result;
- textClosureMap = f: predefined: names:
+ textClosureMap =
+ f: predefined: names:
concatStringsSep "\n" (map f (textClosureList predefined names));
- noDepEntry = text: {inherit text; deps = [];};
- fullDepEntry = text: deps: {inherit text deps;};
- packEntry = deps: {inherit deps; text="";};
+ noDepEntry = text: {
+ inherit text;
+ deps = [ ];
+ };
+ fullDepEntry = text: deps: { inherit text deps; };
+ packEntry = deps: {
+ inherit deps;
+ text = "";
+ };
stringAfter = deps: text: { inherit text deps; };