2015-12-19 15:04:36 +00:00
|
|
|
let
|
2016-07-20 16:57:31 +01:00
|
|
|
pkgs = import ./.. { };
|
|
|
|
lib = pkgs.lib;
|
|
|
|
sources = lib.sourceFilesBySuffices ./. [".xml"];
|
2015-12-19 15:04:36 +00:00
|
|
|
sources-langs = ./languages-frameworks;
|
|
|
|
in
|
2016-07-20 16:57:31 +01:00
|
|
|
pkgs.stdenv.mkDerivation {
|
2014-08-24 10:02:23 +01:00
|
|
|
name = "nixpkgs-manual";
|
|
|
|
|
|
|
|
|
2016-07-20 16:57:31 +01:00
|
|
|
buildInputs = with pkgs; [ pandoc libxml2 libxslt zip ];
|
2014-08-24 10:02:23 +01:00
|
|
|
|
|
|
|
xsltFlags = ''
|
|
|
|
--param section.autolabel 1
|
|
|
|
--param section.label.includes.component.label 1
|
|
|
|
--param html.stylesheet 'style.css'
|
|
|
|
--param xref.with.number.and.title 1
|
|
|
|
--param toc.section.depth 3
|
|
|
|
--param admon.style '''
|
|
|
|
--param callout.graphics.extension '.gif'
|
|
|
|
'';
|
|
|
|
|
2015-09-30 16:21:08 +01:00
|
|
|
|
2015-12-21 09:50:37 +00:00
|
|
|
buildCommand = let toDocbook = { useChapters ? false, inputFile, outputFile }:
|
|
|
|
let
|
2017-12-20 14:22:05 +00:00
|
|
|
extraHeader = lib.optionalString (!useChapters)
|
|
|
|
''xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" '';
|
2015-12-21 09:50:37 +00:00
|
|
|
in ''
|
|
|
|
{
|
2017-12-20 14:22:05 +00:00
|
|
|
pandoc '${inputFile}' -w docbook+smart ${lib.optionalString useChapters "--top-level-division=chapter"} \
|
|
|
|
-f markdown+smart \
|
2015-12-21 09:50:37 +00:00
|
|
|
| sed -e 's|<ulink url=|<link xlink:href=|' \
|
|
|
|
-e 's|</ulink>|</link>|' \
|
|
|
|
-e 's|<sect. id=|<section xml:id=|' \
|
|
|
|
-e 's|</sect[0-9]>|</section>|' \
|
|
|
|
-e '1s| id=| xml:id=|' \
|
|
|
|
-e '1s|\(<[^ ]* \)|\1${extraHeader}|'
|
|
|
|
} > '${outputFile}'
|
|
|
|
'';
|
|
|
|
in
|
|
|
|
|
|
|
|
''
|
2015-12-19 15:04:36 +00:00
|
|
|
ln -s '${sources}/'*.xml .
|
|
|
|
mkdir ./languages-frameworks
|
|
|
|
cp -s '${sources-langs}'/* ./languages-frameworks
|
2015-12-21 09:50:37 +00:00
|
|
|
''
|
2015-11-25 16:13:44 +00:00
|
|
|
+ toDocbook {
|
2018-03-24 14:47:41 +00:00
|
|
|
inputFile = ./introduction.chapter.md;
|
|
|
|
outputFile = "introduction.chapter.xml";
|
2016-03-12 20:33:40 +00:00
|
|
|
useChapters = true;
|
2016-02-21 19:13:44 +00:00
|
|
|
}
|
2017-12-20 23:42:07 +00:00
|
|
|
+ toDocbook {
|
2018-03-24 14:47:41 +00:00
|
|
|
inputFile = ./shell.section.md;
|
|
|
|
outputFile = "shell.section.xml";
|
2017-12-20 23:42:07 +00:00
|
|
|
}
|
2016-02-21 19:13:44 +00:00
|
|
|
+ toDocbook {
|
2018-03-24 14:47:41 +00:00
|
|
|
inputFile = ./languages-frameworks/python.section.md;
|
|
|
|
outputFile = "./languages-frameworks/python.section.xml";
|
2015-11-25 16:13:44 +00:00
|
|
|
}
|
2015-12-21 09:50:37 +00:00
|
|
|
+ toDocbook {
|
2018-03-24 14:47:41 +00:00
|
|
|
inputFile = ./languages-frameworks/haskell.section.md;
|
|
|
|
outputFile = "./languages-frameworks/haskell.section.xml";
|
2015-12-21 09:50:37 +00:00
|
|
|
}
|
|
|
|
+ toDocbook {
|
2018-03-24 14:47:41 +00:00
|
|
|
inputFile = ./languages-frameworks/idris.section.md;
|
|
|
|
outputFile = "languages-frameworks/idris.section.xml";
|
2015-12-21 09:50:37 +00:00
|
|
|
}
|
2016-09-19 21:44:39 +01:00
|
|
|
+ toDocbook {
|
2018-03-24 14:47:41 +00:00
|
|
|
inputFile = ./languages-frameworks/node.section.md;
|
|
|
|
outputFile = "languages-frameworks/node.section.xml";
|
2016-09-19 21:44:39 +01:00
|
|
|
}
|
2016-02-22 07:52:22 +00:00
|
|
|
+ toDocbook {
|
2018-03-24 14:47:41 +00:00
|
|
|
inputFile = ./languages-frameworks/r.section.md;
|
|
|
|
outputFile = "languages-frameworks/r.section.xml";
|
2016-02-22 07:52:22 +00:00
|
|
|
}
|
2017-03-20 19:41:37 +00:00
|
|
|
+ toDocbook {
|
2018-03-24 14:47:41 +00:00
|
|
|
inputFile = ./languages-frameworks/rust.section.md;
|
|
|
|
outputFile = "./languages-frameworks/rust.section.xml";
|
2017-03-20 19:41:37 +00:00
|
|
|
}
|
2016-06-25 20:36:44 +01:00
|
|
|
+ toDocbook {
|
2018-03-24 14:47:41 +00:00
|
|
|
inputFile = ./languages-frameworks/vim.section.md;
|
|
|
|
outputFile = "./languages-frameworks/vim.section.xml";
|
2016-06-25 20:36:44 +01:00
|
|
|
}
|
2018-03-18 12:34:46 +00:00
|
|
|
+ toDocbook {
|
2018-03-24 14:47:41 +00:00
|
|
|
inputFile = ./languages-frameworks/emscripten.section.md;
|
|
|
|
outputFile = "./languages-frameworks/emscripten.section.xml";
|
2018-03-18 12:34:46 +00:00
|
|
|
}
|
2015-12-21 09:50:37 +00:00
|
|
|
+ ''
|
2016-07-20 16:57:31 +01:00
|
|
|
echo ${lib.nixpkgsVersion} > .version
|
2014-08-24 10:02:23 +01:00
|
|
|
|
2016-03-30 18:07:34 +01:00
|
|
|
# validate against relaxng schema
|
|
|
|
xmllint --nonet --xinclude --noxincludenode manual.xml --output manual-full.xml
|
2016-07-20 16:57:31 +01:00
|
|
|
${pkgs.jing}/bin/jing ${pkgs.docbook5}/xml/rng/docbook/docbook.rng manual-full.xml
|
2014-08-24 10:02:23 +01:00
|
|
|
|
|
|
|
dst=$out/share/doc/nixpkgs
|
|
|
|
mkdir -p $dst
|
|
|
|
xsltproc $xsltFlags --nonet --xinclude \
|
|
|
|
--output $dst/manual.html \
|
2016-07-20 16:57:31 +01:00
|
|
|
${pkgs.docbook5_xsl}/xml/xsl/docbook/xhtml/docbook.xsl \
|
2014-08-24 10:02:23 +01:00
|
|
|
./manual.xml
|
|
|
|
|
|
|
|
cp ${./style.css} $dst/style.css
|
|
|
|
|
2015-06-30 10:04:46 +01:00
|
|
|
mkdir -p $dst/images/callouts
|
2016-07-20 16:57:31 +01:00
|
|
|
cp "${pkgs.docbook5_xsl}/xml/xsl/docbook/images/callouts/"*.gif $dst/images/callouts/
|
2015-06-30 10:04:46 +01:00
|
|
|
|
2014-08-24 10:02:23 +01:00
|
|
|
mkdir -p $out/nix-support
|
|
|
|
echo "doc manual $dst manual.html" >> $out/nix-support/hydra-build-products
|
2016-07-20 16:57:31 +01:00
|
|
|
|
|
|
|
xsltproc $xsltFlags --nonet --xinclude \
|
|
|
|
--output $dst/epub/ \
|
|
|
|
${pkgs.docbook5_xsl}/xml/xsl/docbook/epub/docbook.xsl \
|
|
|
|
./manual.xml
|
|
|
|
|
|
|
|
cp -r $dst/images $dst/epub/OEBPS
|
|
|
|
echo "application/epub+zip" > mimetype
|
2016-10-03 19:29:58 +01:00
|
|
|
manual="$dst/nixpkgs-manual.epub"
|
|
|
|
zip -0Xq "$manual" mimetype
|
|
|
|
cd $dst/epub && zip -Xr9D "$manual" *
|
|
|
|
rm -rf $dst/epub
|
2014-08-24 10:02:23 +01:00
|
|
|
'';
|
|
|
|
}
|