{
  lib,
  stdenvNoCC,
  # build inputs
  nixos-render-docs,
  documentation-highlighter,
  path,
  # nrd configuration
  release,
  optionsJSON,
}:
stdenvNoCC.mkDerivation {
  name = "nvf-manual";
  src = builtins.path {
    path = lib.sourceFilesBySuffices ./manual [".md"];
    name = "nvf-manual";
  };

  nativeBuildInputs = [nixos-render-docs];

  buildPhase = ''
    dest="$out/share/doc/nvf"
    mkdir -p "$(dirname "$dest")"
    mkdir -p $dest/{highlightjs,media}

    cp -vt $dest/highlightjs \
      ${documentation-highlighter}/highlight.pack.js \
      ${documentation-highlighter}/LICENSE \
      ${documentation-highlighter}/mono-blue.css \
      ${documentation-highlighter}/loader.js

    substituteInPlace ./options.md \
      --subst-var-by \
        OPTIONS_JSON \
        ${optionsJSON}/share/doc/nixos/options.json

    substituteInPlace ./manual.md \
      --subst-var-by \
        NVF_VERSION \
        ${release}

    # copy stylesheet
    cp ${./static/style.css} "$dest/style.css"

    # copy release notes
    cp -vr ${./release-notes} release-notes

    # generate manual from
    nixos-render-docs manual html \
      --manpage-urls ${path + "/doc/manpage-urls.json"} \
      --revision ${lib.trivial.revisionWithDefault release} \
      --stylesheet style.css \
      --script highlightjs/highlight.pack.js \
      --script highlightjs/loader.js \
      --toc-depth 2 \
      --section-toc-depth 1 \
      manual.md \
      "$dest/index.xhtml"

      mkdir -p $out/nix-support/
      echo "doc manual $dest index.html" >> $out/nix-support/hydra-build-products
  '';
}