Add toDhall to lib

This commit is contained in:
Ehmry - 2021-03-24 11:33:07 +01:00
parent d85ba92b5a
commit 307a261dfa
1 changed files with 23 additions and 0 deletions

View File

@ -101,6 +101,29 @@
}) erisInfo);
in assert length caps == 1; head caps;
generators = prev.generators // rec {
toDhall = x:
with builtins;
let concatItems = final.strings.concatStringsSep ", ";
in if isAttrs x then
"{ ${
concatItems (prev.attrsets.mapAttrsToList
(key: value: "${key} = ${toDhall value}") x)
} }"
else if isList x then
"[ ${concatItems (map toDhall x)} ]"
else if isString x || isPath x then
''"${x}"''
else if isInt x then
"${if x < 0 then "" else "+"}${toString}"
else if isFloat x then
toString x
else if isBool x then
(if x then "True" else "False")
else
"abort generators.toDhall: unhandled value (${x})";
};
nixosSystem =
# A derivative of the function for generating Linux NixOS systems.
# This one is not so well tested…