self: { pkgs, lib ? pkgs.lib, module, optionPrefix, }: let # Absolute store path of the flake root, used to compute relative subpaths repoPath = toString self; eval = lib.evalModules { modules = [ (import module self) { _module.check = false; } ]; specialArgs = { inherit pkgs; }; }; # Relative path of the module file within the repo (e.g. "nix/hm-modules.nix") moduleSubpath = lib.removePrefix "/" (lib.removePrefix repoPath (toString module)); # Declaration entry linking each option back to its source file on GitHub moduleDeclaration = { url = "https://github.com/mangowm/mango/blob/main/${moduleSubpath}"; name = ""; }; optionsDoc = pkgs.nixosOptionsDoc { options = eval.options; transformOptions = opt: opt // { visible = opt.visible && !opt.internal; # Strip the option prefix so docs show "enable" instead of "programs.mango.enable" name = lib.removePrefix optionPrefix opt.name; declarations = [ moduleDeclaration ]; }; }; in optionsDoc.optionsJSON