diff --git a/panel/nix/jsonschema-to-module.nix b/panel/nix/jsonschema-to-module.nix deleted file mode 100644 index 4eb18ed9..00000000 --- a/panel/nix/jsonschema-to-module.nix +++ /dev/null @@ -1,81 +0,0 @@ -{ lib, ... }: - -let - inherit (lib) - fromJSON - mapAttrs - attrValues - concatStringsSep - elem - ; - - option = - required: name: prop: - let - description = - if prop ? description then - '' - description = "${prop.description}"; - '' - else - ""; - default = - if (!elem name required && prop ? default) then - '' - default = ${to-value prop.type prop.description}; - '' - else - ""; - - to-type = - type: - { - string = "str"; - integer = "int"; - boolean = "bool"; - } - .${type} or (throw "Unsupported schema type: ${type}"); - - to-value = - type: value: - { - string = ''"${toString value}"''; - integer = toString value; - boolean = if value then "true" else "false"; - } - .${type} or (throw "Unsupported value type: ${type}"); - in - # TODO: squash - '' - ${name} = mkOption { - ${ - # TODO: indent - description - } - type = types.${to-type prop.type}; - ${ - # TODO: indent - default - } - }; - ''; -in -jsonschema: name: # TODO: can't we get the name from the schema? -let - schema = fromJSON jsonschema; - properties = schema.properties or { }; - required = schema.required or [ ]; - options = concatStringsSep "\n\n" (attrValues (mapAttrs (option required) properties)); -in -# TODO: test this -'' - { lib, ... }: - let - inherit (lib) mkOption types; - in - { - options.services.${name} = { - ${options} - }; - } -''