diff --git a/flake.nix b/flake.nix index 55d383a..b057aed 100644 --- a/flake.nix +++ b/flake.nix @@ -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…