{
  writeShellScriptBin,
  makeDesktopItem,
  symlinkJoin,
  html,
}: let
  helpScript = writeShellScriptBin "nvf-help" ''
    set -euo pipefail

    if [[ ! -v BROWSER || -z $BROWSER ]]; then
      for candidate in xdg-open open w3m; do
        BROWSER="$(type -P $candidate || true)"
        if [[ -x $BROWSER ]]; then
          break;
        fi
      done
    fi

    if [[ ! -v BROWSER || -z $BROWSER ]]; then
      echo "$0: unable to start a web browser; please set \$BROWSER"
      exit 1
    else
      exec "$BROWSER" "${html}/share/doc/nvf/index.xhtml"
    fi
  '';

  desktopItem = makeDesktopItem {
    name = "nvf-manual";
    desktopName = "nvf Manual";
    genericName = "View nvf documentation in a web browser";
    icon = "nix-snowflake";
    exec = "${helpScript}/bin/nvf-help";
    categories = ["System"];
  };
in
  symlinkJoin {
    name = "nvf-help";
    paths = [
      helpScript
      desktopItem
    ];
  }