{lib, ...}: let fmt = val: # nil if val == null then "nil" # boolean else if builtins.isBool val then if val then "true" else "false" # number else if builtins.isInt val || builtins.isFloat val then toString val # string else if builtins.isString val then "'${val}'" # table (array) else if builtins.isList val then "{ " + (lib.concatStringsSep ", " (map fmt val)) + " }" # table (object) else if builtins.isAttrs val then "{ " + (lib.concatStringsSep ", " (lib.mapAttrsToList (k: v: "${k} = ${fmt v}") val)) + " }" # invalid else throw "Unsupported value: ${toString val}"; in { fmt = fmt; }