{ pkgs # Note, this should be "the standard library" + HM extensions. , lib ? import ../modules/lib/stdlib-extended.nix pkgs.lib }: let nmdSrc = fetchTarball { url = "https://gitlab.com/api/v4/projects/rycee%2Fnmd/repository/archive.tar.gz?sha=b75d312b4f33bd3294cd8ae5c2ca8c6da2afc169"; sha256 = "0c2nq28rw4v559s3f1nf6y2p6fladgmbqgbsyf3vzs2przn5qn37"; }; nmd = import nmdSrc { inherit lib pkgs; }; # Make sure the used package is scrubbed to avoid actually # instantiating derivations. scrubbedPkgsModule = { imports = [{ _module.args = { pkgs = lib.mkForce (nmd.scrubDerivations "pkgs" pkgs); pkgs_i686 = lib.mkForce { }; }; }]; }; buildModulesDocs = args: nmd.buildModulesDocs ({ moduleRootPaths = [ ./.. ]; mkModuleUrl = path: "https://github.com/nix-community/home-manager/blob/master/${path}#blob-path"; channelName = "home-manager"; } // args); hmModulesDocs = buildModulesDocs { modules = import ../modules/modules.nix { inherit lib pkgs; check = false; } ++ [ scrubbedPkgsModule ]; docBook.id = "home-manager-options"; }; nixosModuleDocs = buildModulesDocs { modules = let nixosModule = module: pkgs.path + "/nixos/modules" + module; mockedNixos = with lib; { options = { environment.pathsToLink = mkSinkUndeclaredOptions { }; systemd.services = mkSinkUndeclaredOptions { }; users.users = mkSinkUndeclaredOptions { }; }; }; in [ ../nixos/default.nix mockedNixos (nixosModule "/misc/assertions.nix") scrubbedPkgsModule ]; docBook = { id = "nixos-options"; optionIdPrefix = "nixos-opt"; }; }; nixDarwinModuleDocs = buildModulesDocs { modules = let nixosModule = module: pkgs.path + "/nixos/modules" + module; mockedNixDarwin = with lib; { options = { environment.pathsToLink = mkSinkUndeclaredOptions { }; system.activationScripts.postActivation.text = mkSinkUndeclaredOptions { }; users.users = mkSinkUndeclaredOptions { }; }; }; in [ ../nix-darwin/default.nix mockedNixDarwin (nixosModule "/misc/assertions.nix") scrubbedPkgsModule ]; docBook = { id = "nix-darwin-options"; optionIdPrefix = "nix-darwin-opt"; }; }; docs = nmd.buildDocBookDocs { pathName = "home-manager"; projectName = "Home Manager"; modulesDocs = [ hmModulesDocs nixDarwinModuleDocs nixosModuleDocs ]; documentsDirectory = ./.; documentType = "book"; chunkToc = '' ''; }; in { inherit nmdSrc; options = { json = hmModulesDocs.json.override { path = "share/doc/home-manager/options.json"; }; }; manPages = docs.manPages; manual = { inherit (docs) html htmlOpenTool; }; # Unstable, mainly for CI. jsonModuleMaintainers = pkgs.writeText "hm-module-maintainers.json" (let result = lib.evalModules { modules = import ../modules/modules.nix { inherit lib pkgs; check = false; } ++ [ scrubbedPkgsModule ]; }; in builtins.toJSON result.config.meta.maintainers); }