diff --git a/doc.nix b/doc.nix new file mode 100644 index 0000000..99778b9 --- /dev/null +++ b/doc.nix @@ -0,0 +1,55 @@ +{ stdenv, + lib, + liminix, + gnumake, + fennel, + pandoc, + luaPackages, + asciidoctor, + borderVmConf +}: +let + json = + (import liminix { + inherit borderVmConf; + device = import (liminix + "/devices/qemu"); + liminix-config = + { ... }: + { + imports = [ ./modules/all-modules.nix ]; + }; + }).outputs.optionsJson; +in +stdenv.mkDerivation { + name = "liminix-doc"; + nativeBuildInputs = [ + gnumake + fennel + pandoc + asciidoctor + luaPackages.lyaml + ]; + + src = lib.sources.sourceFilesBySuffices + (lib.cleanSource ./. ) [ + ".adoc" + ".nix" ".rst" "Makefile" ".svg" + ".fnl" ".py" ".css" ".html" + ".md" ".html.in" + ]; + + buildPhase = '' + cat ${json} | fennel --correlate doc/parse-options.fnl > doc/modules-generated.inc.rst + cat ${json} | fennel --correlate doc/parse-options-outputs.fnl > doc/outputs-generated.inc.rst + cp ${(import ./doc/hardware.nix)} doc/hardware.rst + make -C doc html + ''; + installPhase = '' + mkdir -p $out/nix-support $out/share/ + cd doc + make install prefix=$out/share + ln -s ${json} $out/options.json + echo "file source-dist \"$out/share/doc/liminix\"" \ + > $out/nix-support/hydra-build-products + ''; +} diff --git a/doc/Makefile b/doc/Makefile index 23fb60e..22651ab 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,24 +1,26 @@ -# Minimal makefile for Sphinx documentation -# +DOCS=\ + admin \ + configuration \ + development \ + index \ + installation \ + intro \ + modules \ + outputs \ + reference \ + tutorial -# You can set these variables from the command line, and also -# from the environment for the first two. -SPHINXOPTS ?= -SPHINXBUILD ?= sphinx-build -SOURCEDIR = . -BUILDDIR = _build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) hardware.rst: hardware.nix @rm -f hardware.rst || true @cp $$(nix-build hardware.nix) hardware.rst -.PHONY: help Makefile +%.html : %.adoc + asciidoctor -a stylesheet=asciidoc.css $< -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -html: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) +html: Makefile $(patsubst %,%.html,$(DOCS)) + +install: + mkdir -p $(prefix)/doc + cp -a posts/* news.html index.html liminix.css $(prefix) + cp $(patsubst %,%.html,$(DOCS)) $(prefix)/doc