summary refs log tree commit diff
path: root/doc/default.nix
diff options
context:
space:
mode:
authorpennae <github@quasiparticle.net>2023-06-24 21:39:20 +0200
committerpennae <github@quasiparticle.net>2023-07-01 20:27:29 +0200
commita5414c29a06be9e00d1318cdeb609a42586a976a (patch)
tree125a3a67fe4abeb598bc6da569b242280c5086b1 /doc/default.nix
parent538b3d1b3c12cc07f00dcec374b16a469b3679ff (diff)
downloadnixpkgs-a5414c29a06be9e00d1318cdeb609a42586a976a.tar
nixpkgs-a5414c29a06be9e00d1318cdeb609a42586a976a.tar.gz
nixpkgs-a5414c29a06be9e00d1318cdeb609a42586a976a.tar.bz2
nixpkgs-a5414c29a06be9e00d1318cdeb609a42586a976a.tar.lz
nixpkgs-a5414c29a06be9e00d1318cdeb609a42586a976a.tar.xz
nixpkgs-a5414c29a06be9e00d1318cdeb609a42586a976a.tar.zst
nixpkgs-a5414c29a06be9e00d1318cdeb609a42586a976a.zip
doc: build placeholder epub in its own derivation
mostly to clean up the main manual build makefile and derivation a bit.
not technically necessary, but will make life easier later.
Diffstat (limited to 'doc/default.nix')
-rw-r--r--doc/default.nix70
1 files changed, 43 insertions, 27 deletions
diff --git a/doc/default.nix b/doc/default.nix
index 86b4a8d9781..485af9bd0af 100644
--- a/doc/default.nix
+++ b/doc/default.nix
@@ -1,6 +1,48 @@
 { pkgs ? (import ./.. { }), nixpkgs ? { }}:
 let
   doc-support = import ./doc-support { inherit pkgs nixpkgs; };
+
+  epub = pkgs.runCommand "manual.epub" {
+    nativeBuildInputs = with pkgs; [ libxslt zip ];
+
+    epub = ''
+      <book xmlns="http://docbook.org/ns/docbook"
+            xmlns:xlink="http://www.w3.org/1999/xlink"
+            version="5.0"
+            xml:id="nixpkgs-manual">
+        <info>
+          <title>Nixpkgs Manual</title>
+          <subtitle>Version ${pkgs.lib.version}</subtitle>
+        </info>
+        <chapter>
+          <title>Temporarily unavailable</title>
+          <para>
+            The Nixpkgs manual is currently not available in EPUB format,
+            please use the <link xlink:href="https://nixos.org/nixpkgs/manual">HTML manual</link>
+            instead.
+          </para>
+          <para>
+            If you've used the EPUB manual in the past and it has been useful to you, please
+            <link xlink:href="https://github.com/NixOS/nixpkgs/issues/237234">let us know</link>.
+          </para>
+        </chapter>
+      </book>
+    '';
+
+    passAsFile = [ "epub" ];
+  } ''
+    mkdir scratch
+    xsltproc \
+      --param chapter.autolabel 0 \
+      --nonet \
+      --output scratch/ \
+      ${pkgs.docbook_xsl_ns}/xml/xsl/docbook/epub/docbook.xsl \
+      $epubPath
+
+    echo "application/epub+zip" > mimetype
+    zip -0Xq "$out" mimetype
+    cd scratch && zip -Xr9D "$out" *
+  '';
 in pkgs.stdenv.mkDerivation {
   name = "nixpkgs-manual";
 
@@ -20,33 +62,7 @@ in pkgs.stdenv.mkDerivation {
     ln -s ${doc-support} ./doc-support/result
   '';
 
-  epub = ''
-    <book xmlns="http://docbook.org/ns/docbook"
-          xmlns:xlink="http://www.w3.org/1999/xlink"
-          version="5.0"
-          xml:id="nixpkgs-manual">
-      <info>
-        <title>Nixpkgs Manual</title>
-        <subtitle>Version ${pkgs.lib.version}</subtitle>
-      </info>
-      <chapter>
-        <title>Temporarily unavailable</title>
-        <para>
-          The Nixpkgs manual is currently not available in EPUB format,
-          please use the <link xlink:href="https://nixos.org/nixpkgs/manual">HTML manual</link>
-          instead.
-        </para>
-        <para>
-          If you've used the EPUB manual in the past and it has been useful to you, please
-          <link xlink:href="https://github.com/NixOS/nixpkgs/issues/237234">let us know</link>.
-        </para>
-      </chapter>
-    </book>
-  '';
-  passAsFile = [ "epub" ];
-
   preBuild = ''
-    cp $epubPath epub.xml
     make -j$NIX_BUILD_CORES render-md
   '';
 
@@ -56,7 +72,7 @@ in pkgs.stdenv.mkDerivation {
     mv out/html "$dest"
     mv "$dest/index.html" "$dest/manual.html"
 
-    mv out/epub/manual.epub "$dest/nixpkgs-manual.epub"
+    cp ${epub} "$dest/nixpkgs-manual.epub"
 
     mkdir -p $out/nix-support/
     echo "doc manual $dest manual.html" >> $out/nix-support/hydra-build-products