{ writeShellApplication, ncurses, nix-index }:

writeShellApplication {
  name = "cnf";
  runtimeInputs = [ ncurses nix-index ];
  text = ''
    command_not_found_handle () {
        if [ -n "''${MC_SID-}" ] || ! [ -t 1 ]; then
            >&2 echo "$1: command not found"
            return 127
        fi

        echo -n "searching nix-index..."
        ATTRS=$(nix-locate --minimal --no-group --type x --type s --top-level --whole-name --at-root "/bin/$1")

        case $(echo -n "$ATTRS" | grep -c "^") in
            0)
                >&2 echo -ne "$(tput el1)\r"
                >&2 echo "$1: command not found"
                ;;
            *)
                >&2 echo -ne "$(tput el1)\r"
                >&2 echo "The program ‘$(tput setaf 4)$1$(tput sgr0)’ is currently not installed."
                >&2 echo "It is provided by the following derivation(s):"
                while read -r ATTR; do
                    ATTR=''${ATTR%.out} # Strip trailing '.out'
                    >&2 echo "  $(tput setaf 12)nixpkgs#$(tput setaf 4)$ATTR$(tput sgr0)"
                done <<< "$ATTRS"
        esac

        return 127
    }

    command_not_found_handler () {
        command_not_found_handle "$@"
        return $?
    }

  '';
}
