2018-10-05 16:46:58 +02:00
|
|
|
{ pkgs ? (import ./.. { }), nixpkgs ? { }}:
|
2015-12-19 16:04:36 +01:00
|
|
|
let
|
2024-07-26 19:50:26 +02:00
|
|
|
inherit (pkgs) lib callPackage;
|
2023-06-23 01:03:02 +02:00
|
|
|
inherit (lib) hasPrefix removePrefix;
|
2024-06-14 20:33:43 +02:00
|
|
|
fs = lib.fileset;
|
2023-06-23 01:03:02 +02:00
|
|
|
|
2023-07-13 11:16:28 +02:00
|
|
|
common = import ./common.nix;
|
|
|
|
|
2024-07-26 19:50:26 +02:00
|
|
|
lib-docs = callPackage ./doc-support/lib-function-docs.nix {
|
|
|
|
inherit nixpkgs;
|
2023-06-23 02:02:57 +02:00
|
|
|
};
|
2023-06-24 21:39:20 +02:00
|
|
|
|
|
|
|
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
|
2024-07-13 14:28:14 +02:00
|
|
|
zip -0Xq -b "$TMPDIR" "$out" mimetype
|
|
|
|
cd scratch && zip -Xr9D -b "$TMPDIR" "$out" *
|
2023-06-24 21:39:20 +02:00
|
|
|
'';
|
2023-06-23 01:03:02 +02:00
|
|
|
|
|
|
|
# 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 ];
|
|
|
|
class = "nixpkgsConfig";
|
|
|
|
}) 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;
|
|
|
|
};
|
|
|
|
};
|
2018-12-30 01:10:19 +01:00
|
|
|
in pkgs.stdenv.mkDerivation {
|
2014-08-24 11:02:23 +02:00
|
|
|
name = "nixpkgs-manual";
|
|
|
|
|
2020-12-05 13:47:29 +01:00
|
|
|
nativeBuildInputs = with pkgs; [
|
2023-03-25 21:38:26 +01:00
|
|
|
nixos-render-docs
|
2020-12-05 13:47:29 +01:00
|
|
|
];
|
2014-08-24 11:02:23 +02:00
|
|
|
|
2024-06-14 20:33:43 +02:00
|
|
|
src = fs.toSource {
|
|
|
|
root = ./.;
|
|
|
|
fileset = fs.unions [
|
|
|
|
(fs.fileFilter (file:
|
|
|
|
file.hasExt "md"
|
|
|
|
|| file.hasExt "md.in"
|
|
|
|
) ./.)
|
|
|
|
./style.css
|
|
|
|
./anchor-use.js
|
|
|
|
./anchor.min.js
|
|
|
|
./manpage-urls.json
|
|
|
|
];
|
|
|
|
};
|
2018-03-24 16:36:10 +01:00
|
|
|
|
|
|
|
postPatch = ''
|
2023-06-23 01:03:02 +02:00
|
|
|
ln -s ${optionsDoc.optionsJSON}/share/doc/nixos/options.json ./config-options.json
|
2018-03-24 16:36:10 +01:00
|
|
|
'';
|
2014-08-24 11:02:23 +02:00
|
|
|
|
2024-06-14 20:22:38 +02:00
|
|
|
pythonInterpreterTable = pkgs.callPackage ./doc-support/python-interpreter-table.nix {};
|
|
|
|
|
|
|
|
passAsFile = [ "pythonInterpreterTable" ];
|
|
|
|
|
|
|
|
buildPhase = ''
|
|
|
|
substituteInPlace ./languages-frameworks/python.section.md --subst-var-by python-interpreter-table "$(<"$pythonInterpreterTablePath")"
|
2024-05-23 10:36:15 +02:00
|
|
|
|
2023-03-25 21:38:26 +01:00
|
|
|
cat \
|
|
|
|
./functions/library.md.in \
|
2023-06-23 02:02:57 +02:00
|
|
|
${lib-docs}/index.md \
|
2023-03-25 21:38:26 +01:00
|
|
|
> ./functions/library.md
|
|
|
|
substitute ./manual.md.in ./manual.md \
|
2024-04-30 19:21:39 +02:00
|
|
|
--replace-fail '@MANUAL_VERSION@' '${pkgs.lib.version}'
|
2023-03-25 21:38:26 +01:00
|
|
|
|
|
|
|
mkdir -p out/media
|
|
|
|
|
|
|
|
mkdir -p out/highlightjs
|
|
|
|
cp -t out/highlightjs \
|
|
|
|
${pkgs.documentation-highlighter}/highlight.pack.js \
|
|
|
|
${pkgs.documentation-highlighter}/LICENSE \
|
|
|
|
${pkgs.documentation-highlighter}/mono-blue.css \
|
|
|
|
${pkgs.documentation-highlighter}/loader.js
|
|
|
|
|
2024-03-16 20:16:59 +01:00
|
|
|
cp -t out ./style.css ./anchor.min.js ./anchor-use.js
|
2023-03-25 21:38:26 +01:00
|
|
|
|
|
|
|
nixos-render-docs manual html \
|
|
|
|
--manpage-urls ./manpage-urls.json \
|
|
|
|
--revision ${pkgs.lib.trivial.revisionWithDefault (pkgs.rev or "master")} \
|
|
|
|
--stylesheet style.css \
|
|
|
|
--stylesheet highlightjs/mono-blue.css \
|
|
|
|
--script ./highlightjs/highlight.pack.js \
|
|
|
|
--script ./highlightjs/loader.js \
|
2024-03-16 20:16:59 +01:00
|
|
|
--script ./anchor.min.js \
|
|
|
|
--script ./anchor-use.js \
|
2023-03-25 21:38:26 +01:00
|
|
|
--toc-depth 1 \
|
|
|
|
--section-toc-depth 1 \
|
|
|
|
manual.md \
|
|
|
|
out/index.html
|
2023-04-25 14:37:50 +02:00
|
|
|
'';
|
|
|
|
|
2018-03-24 16:36:10 +01:00
|
|
|
installPhase = ''
|
2023-07-13 11:16:28 +02:00
|
|
|
dest="$out/${common.outputPath}"
|
2018-03-24 16:36:10 +01:00
|
|
|
mkdir -p "$(dirname "$dest")"
|
2023-03-25 21:38:26 +01:00
|
|
|
mv out "$dest"
|
2023-07-13 11:16:28 +02:00
|
|
|
mv "$dest/index.html" "$dest/${common.indexPath}"
|
2016-07-20 17:57:31 +02:00
|
|
|
|
2023-06-24 21:39:20 +02:00
|
|
|
cp ${epub} "$dest/nixpkgs-manual.epub"
|
2016-07-20 17:57:31 +02:00
|
|
|
|
2018-03-24 16:36:10 +01:00
|
|
|
mkdir -p $out/nix-support/
|
2023-07-13 11:16:28 +02:00
|
|
|
echo "doc manual $dest ${common.indexPath}" >> $out/nix-support/hydra-build-products
|
2018-06-06 22:36:17 +02:00
|
|
|
echo "doc manual $dest nixpkgs-manual.epub" >> $out/nix-support/hydra-build-products
|
2014-08-24 11:02:23 +02:00
|
|
|
'';
|
2023-12-18 19:37:16 +01:00
|
|
|
|
|
|
|
passthru.tests.manpage-urls = with pkgs; testers.invalidateFetcherByDrvHash
|
|
|
|
({ name ? "manual_check-manpage-urls"
|
|
|
|
, script
|
|
|
|
, urlsFile
|
|
|
|
}: runCommand name {
|
|
|
|
nativeBuildInputs = [
|
|
|
|
cacert
|
|
|
|
(python3.withPackages (p: with p; [
|
|
|
|
aiohttp
|
|
|
|
rich
|
|
|
|
structlog
|
|
|
|
]))
|
|
|
|
];
|
|
|
|
outputHash = "sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="; # Empty output
|
|
|
|
} ''
|
|
|
|
python3 ${script} ${urlsFile}
|
|
|
|
touch $out
|
|
|
|
'') {
|
|
|
|
script = ./tests/manpage-urls.py;
|
|
|
|
urlsFile = ./manpage-urls.json;
|
|
|
|
};
|
2014-08-24 11:02:23 +02:00
|
|
|
}
|