1
0

setup to parse asciidoc

This commit is contained in:
Daniel Barlow 2025-04-06 18:01:33 +01:00
parent e4aad311a8
commit 936eb1a7cd
2 changed files with 74 additions and 17 deletions

55
doc.nix Normal file
View File

@ -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
'';
}

View File

@ -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 hardware.rst: hardware.nix
@rm -f hardware.rst || true @rm -f hardware.rst || true
@cp $$(nix-build hardware.nix) hardware.rst @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 html: Makefile $(patsubst %,%.html,$(DOCS))
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
html: Makefile install:
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) mkdir -p $(prefix)/doc
cp -a posts/* news.html index.html liminix.css $(prefix)
cp $(patsubst %,%.html,$(DOCS)) $(prefix)/doc