Skip to content

Commit d631537

Browse files
committed
docs: Autogenerate module option reference
1 parent 04d281e commit d631537

File tree

6 files changed

+59
-6
lines changed

6 files changed

+59
-6
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# The output of "mkdocs build"
22
/site/
3+
docs/reference/modules.md
34

45
# Nix build results
56
result*

build.nix

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,19 @@ in {
2424
update-hackage = haskell.callPackage ./scripts/update-hackage.nix {};
2525
update-stackage = haskell.callPackage ./scripts/update-stackage.nix {};
2626
update-pins = haskell.callPackage ./scripts/update-pins.nix {};
27-
update-docs = haskell.callPackage ./scripts/update-docs.nix {};
27+
update-docs = haskell.callPackage ./scripts/update-docs.nix {
28+
generatedOptions = import ./scripts/options-doc.nix {
29+
# nixpkgs unstable changes "Option has no description" from an
30+
# error into a warning. That is quite helpful when hardly any
31+
# of our options are documented, thanks @oxij.
32+
pkgs = import (pkgs.fetchFromGitHub {
33+
owner = "NixOS";
34+
repo = "nixpkgs";
35+
rev = "4ab1c14714fc97a27655f3a6877386da3cb237bc";
36+
sha256 = "16lcj9552q2jfxc27j6116qkf2vl2dcj7vhg5gdq4qi51d891yhn";
37+
}) {};
38+
};
39+
};
2840
check-hydra = haskell.callPackage ./scripts/check-hydra.nix {};
2941
};
3042
}

docs/reference/modules-preamble.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
Haskell.nix modules options for packages and components.
2+
3+
!!! note "Undocumented"
4+
Please help write me.
5+
6+
This documentation is generated from Nix sources in the
7+
[`modules`](https://github.com/input-output-hk/haskell.nix/tree/master/modules)
8+
subdirectory.
9+
10+
The Markdown generation script could also be improved.

docs/reference/modules.md

Lines changed: 0 additions & 4 deletions
This file was deleted.

scripts/options-doc.nix

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{ pkgs ? import <nixpkgs> {}
2+
, lib ? pkgs.lib
3+
}:
4+
let
5+
# Provide a dummy pkg-def for the package set function
6+
pkg-def = hackage: {
7+
packages = {};
8+
compiler = {
9+
version = "";
10+
nix-name = "";
11+
packages = {};
12+
};
13+
};
14+
15+
# Apply the package set function to get NixOS options.
16+
inherit (import ../package-set.nix { hackage = null; inherit pkgs pkg-def; }) options;
17+
18+
# Use code from the NixOS manual to generate Docbook XML options list.
19+
manual = import (pkgs.path + /nixos/doc/manual) {
20+
inherit pkgs options;
21+
config.meta.doc = [];
22+
version = "testing";
23+
revision = "testing";
24+
};
25+
in
26+
# Convert docbook options list to markdown
27+
pkgs.runCommand "options.md" {} ''
28+
${pkgs.buildPackages.pandoc}/bin/pandoc -s -f docbook -t markdown_strict ${manual.generatedSources}/options-db.xml -o $out
29+
''

scripts/update-docs.nix

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
{ stdenv, writeScript, coreutils, glibc, git, openssh, gnused, mkdocs }:
1+
{ stdenv, writeScript, coreutils, glibc, git, openssh, gnused, mkdocs
2+
, generatedOptions }:
23

34
with stdenv.lib;
45

@@ -15,6 +16,9 @@ in
1516
1617
source ${./git.env}
1718
19+
echo "Preprocessing..."
20+
cat docs/reference/modules-preamble.md ${generatedOptions} > docs/reference/modules.md
21+
1822
echo "Building..."
1923
rm -rf site
2024
mkdocs build
@@ -23,6 +27,7 @@ in
2327
sed -i -e '/lastmod/d' site/sitemap.xml
2428
rm -f site/sitemap.xml.gz
2529
rev=$(git rev-parse --short HEAD)
30+
rm doc/reference/modules.md
2631
2732
echo "Updating git index..."
2833
git fetch origin

0 commit comments

Comments
 (0)