diff --git a/doc/default.nix b/doc/default.nix
index 98b4b92be524..7ceaec28af38 100644
--- a/doc/default.nix
+++ b/doc/default.nix
@@ -2,8 +2,8 @@
let
lib = pkgs.lib;
locationsXml = import ./lib-function-locations.nix { inherit pkgs nixpkgs; };
-in
-pkgs.stdenv.mkDerivation {
+ functionDocs = import ./lib-function-docs.nix { inherit locationsXml pkgs; };
+in pkgs.stdenv.mkDerivation {
name = "nixpkgs-manual";
buildInputs = with pkgs; [ pandoc libxml2 libxslt zip jing xmlformat ];
@@ -32,6 +32,7 @@ pkgs.stdenv.mkDerivation {
postPatch = ''
rm -rf ./functions/library/locations.xml
ln -s ${locationsXml} ./functions/library/locations.xml
+ ln -s ${functionDocs} ./functions/library/generated
echo ${lib.version} > .version
'';
diff --git a/doc/functions/library.xml b/doc/functions/library.xml
index 901423c52a18..b01de3c6e413 100644
--- a/doc/functions/library.xml
+++ b/doc/functions/library.xml
@@ -12,4 +12,13 @@
+
+
+
+
+
+
+
diff --git a/doc/lib-function-docs.nix b/doc/lib-function-docs.nix
new file mode 100644
index 000000000000..421f848d25ab
--- /dev/null
+++ b/doc/lib-function-docs.nix
@@ -0,0 +1,26 @@
+# Generates the documentation for library functons via nixdoc. To add
+# another library function file to this list, the include list in the
+# file `doc/functions/library.xml` must also be updated.
+
+{ pkgs ? import ./.. {}, locationsXml }:
+
+with pkgs; stdenv.mkDerivation {
+ name = "nixpkgs-lib-docs";
+ src = ./../lib;
+
+ buildInputs = [ nixdoc ];
+ installPhase = ''
+ function docgen {
+ nixdoc -c "$1" -d "$2" -f "../lib/$1.nix" > "$out/$1.xml"
+ }
+
+ mkdir -p $out
+ ln -s ${locationsXml} $out/locations.xml
+
+ docgen strings 'String manipulation functions'
+ docgen trivial 'Miscellaneous functions'
+ docgen lists 'List manipulation functions'
+ docgen debug 'Debugging functions'
+ docgen options 'NixOS / nixpkgs option handling'
+ '';
+}