{
  pkgs,
  config,
  lib,
  ...
}:
with lib;
let
  cfg = config.eboskma.programs.nnn;
in
{
  options.eboskma.programs.nnn = {
    enable = mkEnableOption "nnn";
  };

  config = mkIf cfg.enable {
    programs.nnn = {
      enable = true;
      package =
        (pkgs.nnn.overrideAttrs (_prevAttrs: {
          version = "unstable-2023-10-08";
          src = pkgs.fetchFromGitHub {
            owner = "jarun";
            repo = "nnn";
            rev = "7f63bef4d6c9f70b99a4c98435c9c0a68e05be44";
            hash = "sha256-B9WRQW4wbs3+lJ9ACFheTaO+0+G/r67yJZJJPMDIQXI=";
          };
        })).override
          {
            withNerdIcons = true;
            extraMakeFlags = [
              "O_COLEMAK=1"
              "O_GITSTATUS=1"
            ];
          };
      plugins = {
        src =
          (pkgs.fetchFromGitHub {
            owner = "jarun";
            repo = "nnn";
            rev = "7f63bef4d6c9f70b99a4c98435c9c0a68e05be44";
            hash = "sha256-B9WRQW4wbs3+lJ9ACFheTaO+0+G/r67yJZJJPMDIQXI=";
          })
          + "/plugins";

        mappings = {
          c = "fzcd";
          f = "finder";
          V = "imgview";
        };
      };

      extraPackages = with pkgs; [
        atool
        ffmpegthumbnailer
        html2text
        (imv.override {
          withBackends = [
            "libtiff"
            "libjpeg"
            "libpng"
            "librsvg"
            "libheif"
          ];
        })
        mediainfo
        p7zip
        pbzip2
        pigz
        sourceHighlight
        zip
      ];
    };
  };
}