From f1e1b59ba58c45eed9c95e9e0ab1d060ce0e2528 Mon Sep 17 00:00:00 2001 From: rasmus-kirk Date: Fri, 23 Feb 2024 16:31:16 +0100 Subject: [PATCH] updated documentation process --- .github/workflows/deployment.yml | 8 ++--- README.md | 4 +++ mkDocs.nix | 58 +++++++++++++++++++++++++++----- mkPandoc.nix | 43 ----------------------- 4 files changed, 58 insertions(+), 55 deletions(-) delete mode 100644 mkPandoc.nix diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index d93d94b..56319e3 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -36,12 +36,12 @@ jobs: - run: nix build .#docs - - run: nix run .#pandoc + - run: mkdir -p out && cp ./result/* out - - name: Store pandoc + - name: Store docs uses: ./.github/actions/upload-artifact with: - name: pandoc + name: docs path: ./out deploy-docs: @@ -57,7 +57,7 @@ jobs: - name: Get nix build output uses: ./.github/actions/download-artifact with: - name: pandoc + name: docs - name: Setup Pages uses: actions/configure-pages@v3 diff --git a/README.md b/README.md index 716b5db..1c1b9a0 100644 --- a/README.md +++ b/README.md @@ -122,6 +122,10 @@ nixarr = { ## Todo +### Documentation + +Add a wiki with documentation and guides. + ### DDNS Add DDNS-support. diff --git a/mkDocs.nix b/mkDocs.nix index 6a0164a..8534003 100644 --- a/mkDocs.nix +++ b/mkDocs.nix @@ -3,7 +3,6 @@ pkgs, runCommand, nixosOptionsDoc, - inputs, ... }: let evalNixos = lib.evalModules { @@ -19,10 +18,53 @@ optionsDocNixos = nixosOptionsDoc { inherit (evalNixos) options; }; -in - # create a derivation for capturing the markdown output - runCommand "options-doc.md" {} '' - mkdir -p $out - cat ${optionsDocNixos.optionsCommonMark} | tail -n +58 >> $out/nixos.md - sed -i '/\*Declared by:\*/{N;d;}' $out/nixos.md - '' +in pkgs.stdenv.mkDerivation { + name = "nixdocs2html"; + src = ./.; + buildInputs = with pkgs; [ pandoc ]; + phases = ["unpackPhase" "buildPhase"]; + buildPhase = '' + tmpdir=$(mktemp -d) + mkdir -p $out + cp docs/styling/style.css $out + + # Generate md docs + cat ${optionsDocNixos.optionsCommonMark} | tail -n +58 >> "$tmpdir"/nixos.md + + # Remove "Declared by" lines + sed -i '/\*Declared by:\*/{N;d;}' "$tmpdir"/nixos.md + + # Code blocks to nix code blocks + # shellcheck disable=SC2016 + awk ' + /^```$/ { + if (!block) { + print "```nix"; # Start of a code block + block = 1; + } else { + print "```"; # End of a code block + block = 0; + } + next; + } + { print } # Print all lines, including those inside code blocks + ' block=0 "$tmpdir"/nixos.md > "$tmpdir"/1.md + # inline code "blocks" to nix code blocks + # shellcheck disable=SC2016 + sed '/^`[^`]*`$/s/`\(.*\)`/```nix\n\1\n```/g' "$tmpdir"/1.md > "$tmpdir"/2.md + # Remove bottom util-nixarr options + sed '/util-nixarr/,$d' "$tmpdir"/2.md > "$tmpdir"/done.md + + pandoc \ + --standalone \ + --highlight-style docs/styling/gruvbox.theme \ + --metadata title="Nixarr - Option Documentation" \ + --metadata date="$(date -u '+%Y-%m-%d - %H:%M:%S %Z')" \ + --css=style.css \ + -V lang=en \ + -V --mathjax \ + -f markdown+smart \ + -o $out/index.html \ + "$tmpdir"/done.md + ''; + } diff --git a/mkPandoc.nix b/mkPandoc.nix deleted file mode 100644 index a7c8947..0000000 --- a/mkPandoc.nix +++ /dev/null @@ -1,43 +0,0 @@ -{pkgs, ...}: -pkgs.writeShellApplication { - name = "my-script"; - runtimeInputs = with pkgs; [ pandoc ]; - text = '' - tmpdir=$(mktemp -d) - - # Code blocks to nix code blocks - # shellcheck disable=SC2016 - awk ' - /^```$/ { - if (!block) { - print "```nix"; # Start of a code block - block = 1; - } else { - print "```"; # End of a code block - block = 0; - } - next; - } - { print } # Print all lines, including those inside code blocks - ' block=0 result/nixos.md > "$tmpdir"/1.md - # inline code "blocks" to nix code blocks - # shellcheck disable=SC2016 - sed '/^`[^`]*`$/s/`\(.*\)`/```nix\n\1\n```/g' "$tmpdir"/1.md > "$tmpdir"/2.md - # Remove bottom util-nixarr options - sed '/util-nixarr/,$d' "$tmpdir"/2.md > "$tmpdir"/done.md - - mkdir -p out - cp docs/styling/style.css out - pandoc \ - --standalone \ - --highlight-style docs/styling/gruvbox.theme \ - --metadata title="Nixarr - Option Documentation" \ - --metadata date="$(date -u '+%Y-%m-%d - %H:%M:%S %Z')" \ - --css=style.css \ - -V lang=en \ - -V --mathjax \ - -f markdown+smart \ - -o out/index.html \ - "$tmpdir"/done.md - ''; -}