{ lib, pkgs, nixos-render-docs, python3, perl, stdenvNoCC, inputs, ... }: let optionsDoc = pkgs.nixosOptionsDoc { inherit (pkgs.lib.evalModules { modules = [ "${inputs.nixpkgs.outPath}/pkgs/top-level/config.nix" ]; class = "nixpkgsConfig"; }) options ; documentType = "none"; transformOptions = opt: opt // { declarations = map ( decl: if lib.hasPrefix (toString ../..) (toString decl) then let subpath = lib.removePrefix "/" (lib.removePrefix (toString ../.) (toString decl)); in { url = "https://github.com/NixOS/nixpkgs/blob/master/${subpath}"; name = subpath; } else decl ) opt.declarations; }; }; optionsJSONFile = "${optionsDoc.optionsJSON}/share/doc/nixos/options.json"; in stdenvNoCC.mkDerivation { name = "nixpkgs-manual-md"; nativeBuildInputs = [ nixos-render-docs python3 perl ]; src = inputs.nixpkgs; postPatch = '' cd doc ''; pythonInterpreterTable = pkgs.callPackage ./python-interp-table.nix { }; passAsFile = [ "pythonInterpreterTable" ]; buildPhase = '' nixos-render-docs -j $NIX_BUILD_CORES options commonmark \ --manpage-urls ./manpage-urls.json \ --revision ${inputs.nixpkgs.rev} \ ${optionsJSONFile} ./options.md substituteInPlace ./languages-frameworks/python.section.md --subst-var-by python-interpreter-table "$(<"$pythonInterpreterTablePath")" mv ./functions/library.md.in ./functions/library.md substitute ./manual.md.in ./manual.md \ --replace-fail '@MANUAL_VERSION@' '${lib.version}' mkdir out mv preface.chapter.md out/index.md mv options.md out/ mv build-helpers out/build-helpers mv build-helpers.md out/build-helpers/index.md mv development out/development mv development.md out/development/index.md mv functions out/functions mv functions.md out/functions/index.md mv hooks out/hooks mv languages-frameworks out/languages-and-frameworks mkdir out/library-reference cp ${pkgs.amg.nixpkgs-lib-docs}/*.md out/library-reference/ mv module-system out/module-system mv packages out/packages mv stdenv out/stdenv mv stdenv.md out/stdenv/index.md mv using out/using-nixpkgs mv using-nixpkgs.md out/using-nixpkgs/index.md cp ${optionsJSONFile} out/options.json pushd out find . -type f -exec perl -pi -e 's/\s*:::{.note}\n/!!! note\n\ \ /' {} \; find . -type f -exec perl -pi -e 's/\s*:::{.warning}\n/!!! warning\n\ \ /' {} \; find . -type f -exec perl -pi -e 's/\s*:::{.tip}\n/!!! tip\n\ \ \ \ /' {} \; find . -type f -exec perl -pi -e 's/\s*:::{.example}\n/!!! example\n\ \ \ \ /' {} \; find . -type f -exec sed -i 's/\s*::://g' {} \; popd ''; installPhase = '' mkdir $out mv out/* $out ''; }