2024-12-18 15:40:15 +03:00
|
|
|
{ sp-module, pkgs }:
|
|
|
|
let
|
|
|
|
lib = pkgs.lib;
|
2025-06-18 19:53:44 +03:00
|
|
|
options =
|
|
|
|
(pkgs.lib.evalModules {
|
|
|
|
modules = [
|
|
|
|
{ _module.check = false; }
|
|
|
|
sp-module.nixosModules.default
|
|
|
|
];
|
|
|
|
}).options;
|
2024-12-18 15:40:15 +03:00
|
|
|
# Transform a Nix option to a JSON structure with metadata
|
2025-06-18 19:53:44 +03:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
);
|
2024-12-18 15:40:15 +03:00
|
|
|
in
|
|
|
|
builtins.toJSON ({
|
|
|
|
meta = if builtins.hasAttr "meta" sp-module then sp-module.meta { inherit lib; } else null;
|
|
|
|
configPathsNeeded = sp-module.configPathsNeeded;
|
2025-06-18 19:53:44 +03:00
|
|
|
options = pkgs.lib.mapAttrs optionToMeta (
|
|
|
|
builtins.head (lib.mapAttrsToList (name: value: value) options.selfprivacy.modules)
|
|
|
|
);
|
2024-12-18 15:40:15 +03:00
|
|
|
})
|