Commit Graph

29 Commits

Author SHA1 Message Date
Johannes Kirschbauer
e8608f5af3 feat(jsonschema): filter out $exportedModuleInfo by default 2025-06-04 20:22:54 +02:00
Johannes Kirschbauer
cdaa35ca5f feat(jsonschema): remove 'default' if 'defaultText' is present
default is likely to contain an error thunk if defaultText is set
including it into $exportedModuleInfo makes it non-serializable
2025-06-04 20:22:32 +02:00
Johannes Kirschbauer
f99ddab70f Feat(jsonschema): simplify isRequired, look into default and defaultText 2025-06-04 19:57:39 +02:00
Johannes Kirschbauer
f6544d1cda Feat(jsonschema): convert deferredModule to unknown 2025-05-20 15:48:28 +02:00
Valentin Gagarin
6a2e81373c lib/jsonschema: render defaults for submodule options
this relaxes the constraint that options of type `submodule` are always
required, and will render benign default values.
2025-04-16 16:55:46 +02:00
Valentin Gagarin
e28681c4f2 lib/jsonschema: make attrs required
Before the change, modules of the form

```nix
{ lib, ... }: {
  foo.bar = lib.mkOption {
    # ...
  };
}
```

or

```nix
{ lib, ... }: {
  foo = lib.mkOption {
    type = lib.types.subModule {
      bar = lib.mkOption {
        # ...
      };
    };
  };
}
```

would not render with `foo` as required, which is not faithful to the
module system's semantics.

This change also tests that fields with defaults are not marked required.
Note that submodule options cannot have their defaults rendered to JSON
schema, and are therefore always marked required.

Architecturally this change is rather unfortunate: So far the checks for
defaults happen in the rendering (using `isDefault`) and not in the parsing,
but here we're adding a field to `$exportedModuleInfo`. While strictly
speaking we probably don't want to consider requiredness as module-level
information, it seems more reasonable to me to do it that way since at
the JSON schema level we have lost the distinction between `attrs`,
`attrsOf`, `submodule`.
2025-04-16 13:20:00 +02:00
Michael Hoang
66e4c41142 lib/jsonschema: fix enum support 2025-04-08 08:53:27 +02:00
Johannes Kirschbauer
6808f0a59f jsonschema: dont export defaultText as default 2024-11-21 15:38:17 +00:00
Johannes Kirschbauer
b9ef080950 jsonschema: migrate tests 2024-11-12 13:23:31 +01:00
Johannes Kirschbauer
499bc4743b jsonschema: Add exportfield for module internals 2024-11-12 12:48:45 +01:00
Johannes Kirschbauer
a1acac4b7d Inventory: init inventory.tags for globally defined static and dynamic tags 2024-11-08 12:48:03 +01:00
danjujan
61958130fd lib: fix typos 2024-10-29 12:37:34 +00:00
Johannes Kirschbauer
c2eae7d0a6 lib/jsonSchema: handle defaults for defaultText 2024-10-22 12:59:44 +02:00
Johannes Kirschbauer
7e84eaa4b3 Init: Autogenerate classes from nix interfaces 2024-07-18 19:14:12 +02:00
Johannes Kirschbauer
e54101165f Inventory: generate exact schema for validation & documentation 2024-07-14 13:30:02 +02:00
Johannes Kirschbauer
3034b9ef92 Json-schema: extend interface by header to allow schema spec and arbitrary extensions 2024-07-14 13:29:19 +02:00
Johannes Kirschbauer
294c5548b9 Inventory: add concrete use-case examples 2024-06-24 14:35:41 +02:00
DavHau
54fcfda43e lib.jsonschema: parse some more types 2024-05-23 16:12:49 +02:00
Qubasa
393ed517e2 jsonschema: Filter out 'invisible' options, that are there to throw errors on define 2024-05-03 19:40:42 +02:00
Qubasa
a48df5b993 Add package function-schema and module-schema. Add check for module jsonschema. 2024-05-01 23:16:17 +02:00
Jörg Thalheim
e296a3019d re-format with nixfmt 2024-03-17 19:48:49 +01:00
DavHau
f54ad0f739 jsonschema: support mdDoc description 2023-11-21 17:29:22 +07:00
DavHau
3c4c2995ca lib/jsonschema: add more types and excludes
- Complete the types to cover almost everything
- exclude specific types like functionTo or package
2023-11-20 19:40:27 +07:00
DavHau
e779bc2d11 lib/jsonschema: support listOf unspecified 2023-11-20 17:03:42 +07:00
Jörg Thalheim
c0799ce425 jsonschema: fix eval 2023-09-27 13:08:24 +00:00
lassulus
acf1c0b87a lib jsonschema: add path 2023-09-15 12:17:07 +00:00
DavHau
fb76ad45e8 webui: implement /api/machines/{name}/schema 2023-08-25 21:26:30 +02:00
DavHau
cd048c2114 lan-config: handle nested options 2023-08-09 18:19:43 +02:00
DavHau
7262208a4c clanLib.jsonschema: move tests from pkgs/clan-cli 2023-08-09 16:05:33 +02:00