summary refs log tree commit diff
path: root/doc/doc-support
diff options
context:
space:
mode:
authorpennae <github@quasiparticle.net>2023-03-25 21:38:26 +0100
committerpennae <github@quasiparticle.net>2023-07-01 20:59:29 +0200
commitbe4d19ff1a9a327ae805fdb344470ed6450256fc (patch)
treefa5f0b01cc0f081d16d3aef6d9af84c318151c00 /doc/doc-support
parentb521f451a3b2dcee1c72cd11a87d14249b125ce9 (diff)
doc: render nixpkgs manual with nrd
also updates nixdoc to 2.3.0. the nixdoc update is not a separate commit
because that would leave the manual build broken for one commit,
potentially breaking bisects and rebases.
Diffstat (limited to 'doc/doc-support')
-rw-r--r--doc/doc-support/default.nix5
-rw-r--r--doc/doc-support/lib-function-docs.nix17
-rw-r--r--doc/doc-support/lib-function-locations.nix38
3 files changed, 22 insertions, 38 deletions
diff --git a/doc/doc-support/default.nix b/doc/doc-support/default.nix
index b1d55c10e82b6..34f1982f5c966 100644
--- a/doc/doc-support/default.nix
+++ b/doc/doc-support/default.nix
@@ -69,7 +69,7 @@ in pkgs.runCommand "doc-support" {}
   (
     cd result
     ln -s ${functionDocs} ./function-docs
-    ln -s ${optionsDoc.optionsDocBook} ./config-options.docbook.xml
+    ln -s ${optionsDoc.optionsJSON} ./config-options.json
 
     ln -s ${pkgs.docbook5}/xml/rng/docbook/docbook.rng ./docbook.rng
     ln -s ${pkgs.docbook_xsl_ns}/xml/xsl ./xsl
@@ -77,9 +77,6 @@ in pkgs.runCommand "doc-support" {}
     ln -s ${xhtml-xsl} ./xhtml.xsl
 
     ln -s ${./xmlformat.conf} ./xmlformat.conf
-    ln -s ${pkgs.documentation-highlighter} ./highlightjs
-
-    echo -n "${version}" > ./version
   )
   mv result $out
 ''
diff --git a/doc/doc-support/lib-function-docs.nix b/doc/doc-support/lib-function-docs.nix
index 1d9a056c529f6..018b0bd5e9453 100644
--- a/doc/doc-support/lib-function-docs.nix
+++ b/doc/doc-support/lib-function-docs.nix
@@ -5,7 +5,7 @@
 with pkgs;
 
 let
-  locationsXml = import ./lib-function-locations.nix { inherit pkgs nixpkgs libsets; };
+  locationsJSON = import ./lib-function-locations.nix { inherit pkgs nixpkgs libsets; };
 in
 stdenv.mkDerivation {
   name = "nixpkgs-lib-docs";
@@ -16,26 +16,23 @@ stdenv.mkDerivation {
     function docgen {
       # TODO: wrap lib.$1 in <literal>, make nixdoc not escape it
       if [[ -e "../lib/$1.nix" ]]; then
-        nixdoc -c "$1" -d "lib.$1: $2" -f "$1.nix" > "$out/$1.xml"
+        nixdoc -c "$1" -d "lib.$1: $2" -l ${locationsJSON} -f "$1.nix" > "$out/$1.md"
       else
-        nixdoc -c "$1" -d "lib.$1: $2" -f "$1/default.nix" > "$out/$1.xml"
+        nixdoc -c "$1" -d "lib.$1: $2" -l ${locationsJSON} -f "$1/default.nix" > "$out/$1.md"
       fi
-      echo "<xi:include href='$1.xml' />" >> "$out/index.xml"
+      echo "$out/$1.md" >> "$out/index.md"
     }
 
     mkdir -p "$out"
 
-    cat > "$out/index.xml" << 'EOF'
-    <?xml version="1.0" encoding="utf-8"?>
-    <root xmlns:xi="http://www.w3.org/2001/XInclude">
+    cat > "$out/index.md" << 'EOF'
+    ```{=include=} sections
     EOF
 
     ${lib.concatMapStrings ({ name, description }: ''
       docgen ${name} ${lib.escapeShellArg description}
     '') libsets}
 
-    echo "</root>" >> "$out/index.xml"
-
-    ln -s ${locationsXml} $out/locations.xml
+    echo '```' >> "$out/index.md"
   '';
 }
diff --git a/doc/doc-support/lib-function-locations.nix b/doc/doc-support/lib-function-locations.nix
index 1ee59648330aa..e6794617fdd89 100644
--- a/doc/doc-support/lib-function-locations.nix
+++ b/doc/doc-support/lib-function-locations.nix
@@ -58,28 +58,18 @@ let
     [ "-prime" ];
 
   urlPrefix = "https://github.com/NixOS/nixpkgs/blob/${revision}";
-  xmlstrings = (nixpkgsLib.strings.concatMapStrings
-      ({ name, value }:
-      ''
-      <section><title>${name}</title>
-        <para xml:id="${sanitizeId name}">
-        Located at
-        <link
-          xlink:href="${urlPrefix}/${value.file}#L${builtins.toString value.line}">${value.file}:${builtins.toString value.line}</link>
-        in  <literal>&lt;nixpkgs&gt;</literal>.
-        </para>
-        </section>
-      '')
-      relativeLocs);
+  jsonLocs = builtins.listToAttrs
+    (builtins.map
+      ({ name, value }: {
+        name = sanitizeId name;
+        value =
+          let
+            text = "${value.file}:${builtins.toString value.line}";
+            target = "${urlPrefix}/${value.file}#L${builtins.toString value.line}";
+          in
+            "[${text}](${target}) in `<nixpkgs>`";
+      })
+    relativeLocs);
 
-in pkgs.writeText
-    "locations.xml"
-    ''
-    <section xmlns="http://docbook.org/ns/docbook"
-         xmlns:xlink="http://www.w3.org/1999/xlink"
-         version="5">
-         <title>All the locations for every lib function</title>
-         <para>This file is only for inclusion by other files.</para>
-         ${xmlstrings}
-    </section>
-    ''
+in
+pkgs.writeText "locations.json" (builtins.toJSON jsonLocs)