commit 936eb1a7cd7661933e381b9013ab5ae6b407c7dd
parent e4aad311a828145b0529d2762d26c74a5557642e
Author: Daniel Barlow <dan@telent.net>
Date: Sun, 6 Apr 2025 18:01:33 +0100
setup to parse asciidoc
Diffstat:
| A | doc.nix | | | 55 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| M | doc/Makefile | | | 36 | +++++++++++++++++++----------------- |
2 files changed, 74 insertions(+), 17 deletions(-)
diff --git a/doc.nix 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
@@ -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 $<
+
+html: Makefile $(patsubst %,%.html,$(DOCS))
-# 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)
+install:
+ mkdir -p $(prefix)/doc
+ cp -a posts/* news.html index.html liminix.css $(prefix)
+ cp $(patsubst %,%.html,$(DOCS)) $(prefix)/doc