From e4e8074fed6cc2a8fcc137c3dfc8e0ca4bfaa737 Mon Sep 17 00:00:00 2001
From: Valentin Gagarin <valentin.gagarin@tweag.io>
Date: Fri, 4 Apr 2025 11:15:20 +0200
Subject: [PATCH] JSON schema converter: make regular attrs required

---
 panel/jsonschema.nix | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/panel/jsonschema.nix b/panel/jsonschema.nix
index ca833827..b4dd8665 100644
--- a/panel/jsonschema.nix
+++ b/panel/jsonschema.nix
@@ -127,7 +127,7 @@ rec {
       # parse options to jsonschema properties
       properties = lib.mapAttrs (_name: option: (parseOption' (path ++ [ _name ]) option)) options';
       # TODO: figure out how to handle if prop.anyOf is used
-      isRequired = prop: !(prop ? default || prop.type or null == "object");
+      isRequired = prop: !(prop ? default || prop."$exportedModuleInfo".required or false);
       requiredProps = lib.filterAttrs (_: prop: isRequired prop) properties;
       required = lib.optionalAttrs (requiredProps != { }) { required = lib.attrNames requiredProps; };
       header' = if addHeader then header else { };
@@ -381,7 +381,11 @@ rec {
     # return jsonschema property definition for attrs
     then
       default
-      // exposedModuleInfo
+      // (lib.reqursiveUpdate exposedModuleInfo {
+        "$exportedModuleInfo" = {
+          required = true;
+        };
+      })
       // example
       // description
       // {