{ sp-module, pkgs }: let lib = pkgs.lib; options = (pkgs.lib.evalModules { modules = [ { _module.check = false; } sp-module.nixosModules.default ]; }).options; # Transform a Nix option to a JSON structure with metadata optionToMeta = ( name: option: { name = name; description = if builtins.hasAttr "description" option then option.description else null; loc = option.loc; meta = if builtins.hasAttr "meta" option then option.meta else null; default = if builtins.hasAttr "default" option then option.default else null; } ); in builtins.toJSON ({ meta = if builtins.hasAttr "meta" sp-module then sp-module.meta { inherit lib; } else null; configPathsNeeded = sp-module.configPathsNeeded; options = pkgs.lib.mapAttrs optionToMeta ( builtins.head (lib.mapAttrsToList (name: value: value) options.selfprivacy.modules) ); })