{ lix-docs, stdenv, vim, perl, ... }: let f = "find . -type f -exec"; s = "${f} sed -i"; in stdenv.mkDerivation { inherit (lix-docs) version; pname = "lix-docs-md"; inherit (lix-docs) src; nativeBuildInputs = [ vim perl ]; installPhase = '' defaultFix() { sed -i '1,2d' $0 sed -i '1s/ - /\n\n/' $0 sed -i '1s/^/# /' $0 sed -i '3s/\w/\u&/' $0 sed -i '3s/$/\./' $0 } export -f defaultFix mkdir $out cp -r ${lix-docs.doc}/manualMD/* $out chmod -R +w $out pushd $out mv introduction.md index.md mv advanced-topics/advanced-topics.md advanced-topics/index.md mv advanced-topics Advanced-Topics mv architecture/architecture.md architecture/index.md mv command-ref Command-Reference sed -i 's!^- \[\(.*\)\]!# \1 !g' glossary.md sed -i 's/^\(.*\)\({#gloss-.*}\)\(.*\)/\1\3\2/g' glossary.md sed -i 's/ ,/,/g' glossary.md sed -i 's/\(\S\){/\1 {/g' glossary.md pushd Command-Reference mv command-ref.md index.md mv files.md files/index.md mv nix-env.md nix-env/index.md mv nix-store.md nix-store/index.md # Fixup all Nix3(aka new cli) commands pushd new-cli ${s} '6,7d' {} \; ${s} '6s/ - /\n\n/' {} \; ${s} '6s/^/# /' {} \; ${s} '8s/\w/\u&/' {} \; ${s} '8s/$/\./' {} \; ${f} ex -c '1,5m9' -c w -c q {} \; ${s} 's!../command-ref!\./!g' {} \; popd mv new-cli New-CLI # Fixup all non-nix3 commands find . -type f -name "nix-*.md" -exec bash -c 'defaultFix "$0"' {} \; # Fixup nix-store pushd nix-store find . -type f -name "*.md" -exec bash -c 'defaultFix "$0"' {} \; sed -i 's!\./nix-store!\./!g' index.md popd # Fixup Nix-env pushd nix-env find . -type f -name "*.md" -exec bash -c 'defaultFix "$0"' {} \; ${s} 's!../command-ref!\.!g' {} \; sed -i 's!\./nix-env!\.!g' index.md sed -i 's!\./files!\.\./files!g' index.md sed -i 's!\./new-cli!\.\./new-cli!g' index.md sed -i 's!\.\./language!\.\./\.\./language!g' index.md popd bash -c defaultFix conf-file.md popd # Contributing directory pushd contributing mv contributing.md index.md ex -c '1,9m11' -c w -c q experimental-features.md sed -i 's!^## \[\(.*\)\]!## \1 !g' experimental-features.md popd pushd language sed -i '3s/##/#/' values.md sed -E -i 's/(.*)(#type-\w+)">(\w+)<\/a>/## \3 {\2}/' values.md sed -i 's/## List/# List/' values.md sed -i 's/## Attribute Set/# Attribute Set/' values.md popd # Final directories mv installation/installation.md installation/index.md mv package-management/package-management.md package-management/index.md mv package-management Package-Management mv protocols/protocols.md protocols/index.md mv release-notes/release-notes.md release-notes/index.md # Admonitions find . -type f -name "*.md" -exec perl -pi -e 's/\s*
/!!! warning/g' {} \; find . -type f -name "*.md" -exec sed -i '/<\/div>/d' {} \; find . -type f -name "*.md" -exec perl -pi -e 's/\n\n\n/placeholderstring123/g' -0 {} \; find . -type f -name "*.md" -exec sed -i '/^!!! warning/,/placeholderstring123/s/^/\ \ \ \ /' {} \; find . -type f -name "*.md" -exec perl -pi -e 's/placeholderstring123/\n\n\n/g' -0 {} \; find . -type f -name "*.md" -exec perl -pi -e 's/\s*> \*\*Warning\*\*/!!! warning2/g' {} \; find . -type f -name "*.md" -exec sed -i '/^!!! warning2/,/^$/s/ >/\ \ \ /' {} \; find . -type f -name "*.md" -exec sed -i 's/!!! warning2/!!! warning/' {} \; find . -type f -name "*.md" -exec sed -i 's/^\ \ \ \ !!! warning/!!! warning/' {} \; find . -type f -name "*.md" -exec perl -pi -e 's/!!! warning\n \n/!!! warning\n/g' -0 {} \; find . -type f -name "*.md" -exec perl -pi -e 's/\s*> \*\*Note\*\*\n.*/\n\n!!! note/g' -0 {} \; find . -type f -name "*.md" -exec sed -i '/^!!! note/,/^[^!>]/s/^>/\ \ \ /' {} \; # Increase all headings past line 1 by one level # Lix docs all have level-1 headings, we need at least level 2 find . -type f -name "*.md" -exec sed -i '2,$s/# [^#]*/#&/g' {} \; # Clean up some local links find . -type f -name "*.md" -exec sed -i 's/advanced-topics/Advanced-Topics/g' {} \; find . -type f -name "*.md" -exec sed -i 's/command-ref/Command-Reference/g' {} \; find . -type f -name "*.md" -exec sed -i 's/package-management/Package-Management/g' {} \; find . -type f -name "*.md" -exec sed -i 's!installation/installation\.md!installation/index.md!g' {} \; find . -type f -name "*.md" -exec sed -i 's/new-cli/New-CLI/g' {} \; find . -type f -name "*.md" -exec sed -i 's/Command-Reference\.html//g' {} \; find . -type f -name "*.md" -exec sed -i 's/Command-Reference\.md//g' {} \; find . -type f -name "*.md" -exec sed -i 's/conf-file\.html/conf-file\.md/g' {} \; find . -type f -name "*.md" -exec sed -i 's/nix-env\.md/nix-env\/index.md/g' {} \; find . -type f -name "*.md" -exec sed -i 's/nix-store\.md/nix-store\/index.md/g' {} \; find . -type f -name "*.md" -exec sed -i 's/values\.html/values\.md/g' {} \; find . -type f -name "*.md" -exec sed -i 's/distributed-builds\.html/distributed-builds\.md/g' {} \; # Final misc cleanups find . -type f -name "*.md" -exec sed -i 's/[\]//g' {} \; ''; }