{ pkgs ? (import ../.. {}), nixpkgs ? { }}: let inherit (pkgs) lib; inherit (lib) hasPrefix removePrefix; libsets = [ { name = "asserts"; description = "Assert functions"; } { name = "attrsets"; description = "Attribute-set functions"; } { name = "strings"; description = "String manipulation functions"; } { name = "versions"; description = "Version string functions"; } { name = "trivial"; description = "Miscellaneous functions"; } { name = "lists"; description = "List manipulation functions"; } { name = "debug"; description = "Debugging functions"; } { name = "options"; description = "NixOS / nixpkgs option handling"; } { name = "filesystem"; description = "Filesystem functions"; } { name = "sources"; description = "Source filtering functions"; } { name = "cli"; description = "Command-line serialization functions"; } ]; locationsXml = import ./lib-function-locations.nix { inherit pkgs nixpkgs libsets; }; functionDocs = import ./lib-function-docs.nix { inherit locationsXml pkgs libsets; }; version = pkgs.lib.version; epub-xsl = pkgs.writeText "epub.xsl" '' ''; xhtml-xsl = pkgs.writeText "xhtml.xsl" '' ''; # NB: This file describes the Nixpkgs manual, which happens to use module # docs infra originally developed for NixOS. optionsDoc = pkgs.nixosOptionsDoc { inherit (pkgs.lib.evalModules { modules = [ ../../pkgs/top-level/config.nix ]; }) options; documentType = "none"; transformOptions = opt: opt // { declarations = map (decl: if hasPrefix (toString ../..) (toString decl) then let subpath = removePrefix "/" (removePrefix (toString ../..) (toString decl)); in { url = "https://github.com/NixOS/nixpkgs/blob/master/${subpath}"; name = subpath; } else decl) opt.declarations; }; }; in pkgs.runCommand "doc-support" {} '' mkdir result ( cd result ln -s ${locationsXml} ./function-locations.xml ln -s ${functionDocs} ./function-docs ln -s ${optionsDoc.optionsDocBook} ./config-options.docbook.xml ln -s ${pkgs.docbook5}/xml/rng/docbook/docbook.rng ./docbook.rng ln -s ${pkgs.docbook_xsl_ns}/xml/xsl ./xsl ln -s ${epub-xsl} ./epub.xsl ln -s ${xhtml-xsl} ./xhtml.xsl ln -s ${../../nixos/doc/xmlformat.conf} ./xmlformat.conf ln -s ${pkgs.documentation-highlighter} ./highlightjs echo -n "${version}" > ./version ) mv result $out ''