1{ lib
2, stdenv
3, graphviz
4, imagemagick
5, linux_latest
6, makeFontsConf
7, perl
8, python3
9, sphinx
10, which
11}:
12
13let
14 py = python3.override {
15 packageOverrides = final: prev: rec {
16 docutils_old = prev.docutils.overridePythonAttrs (oldAttrs: rec {
17 version = "0.16";
18 src = final.fetchPypi {
19 pname = "docutils";
20 inherit version;
21 sha256 = "sha256-wt46YOnn0Hvia38rAMoDCcIH4GwQD5zCqUkx/HWkePw=";
22 };
23 });
24
25 sphinx = (prev.sphinx.override rec {
26 alabaster = prev.alabaster.override { inherit pygments; };
27 docutils = docutils_old;
28 pygments = prev.pygments.override { docutils = docutils_old; };
29 }).overridePythonAttrs {
30 # fails due to duplicated packages
31 doCheck = false;
32 };
33
34 sphinx-rtd-theme = prev.sphinx-rtd-theme.override {
35 inherit sphinx;
36 docutils = docutils_old;
37 };
38 };
39 };
40in
41
42stdenv.mkDerivation {
43 pname = "linux-kernel-latest-htmldocs";
44
45 inherit (linux_latest) version src;
46
47 postPatch = ''
48 patchShebangs \
49 Documentation/sphinx/parse-headers.pl \
50 scripts/{get_abi.pl,get_feat.pl,kernel-doc,sphinx-pre-install}
51 '';
52
53 FONTCONFIG_FILE = makeFontsConf {
54 fontDirectories = [ ];
55 };
56
57 nativeBuildInputs = [
58 graphviz
59 imagemagick
60 perl
61 py.pkgs.sphinx
62 py.pkgs.sphinx-rtd-theme
63 which
64 ];
65
66 preBuild = ''
67 export XDG_CACHE_HOME="$(mktemp -d)"
68 '';
69
70 makeFlags = [ "htmldocs" ];
71
72 installPhase = ''
73 mkdir -p $out/share/doc
74 mv Documentation/output $out/share/doc/linux-doc
75 cp -r Documentation/* $out/share/doc/linux-doc/
76 '';
77
78 meta = with lib; {
79 description = "Linux kernel html documentation";
80 homepage = "https://www.kernel.org/doc/htmldocs/";
81 platforms = platforms.linux;
82 inherit (linux_latest.meta) license;
83 maintainers = with maintainers; [ SuperSandro2000 ];
84 };
85}