{ pkgs, ... }:

{
  home.packages = with pkgs; [
    file
    bat
    mediainfo
  ];

  programs.joshuto = {
    enable = true;

    settings = {
      display = {
        automatically_count_files = true;
        show_borders = false;
        show_hidden = true;
        show_icons = true;
        line_number_style = "absolute";
        collapse_preview = false;
      };

      preview = {
        max_preview_size = 10000000000;
        preview_script = "~/.config/joshuto/preview.sh";
        preview_shown_hook_script = "~/.config/joshuto/kitty-show.sh";
        preview_removed_hook_script = "~/.config/joshuto/kitty-remove.sh";
      };
    };

    mimetype = {
      class = {
        audio_default = [
          { command = "mpv"; args = [ "--" ]; }
          { command = "mediainfo"; confirm_exit = true; }
        ];

        image_default = [
          { command = "pqiv"; args = [ "--" ]; fork = true; silent = true; }
        ];

        video_default = [
          { command = "mpv"; args = [ "--" ]; fork = true; silent = true; }
          { command = "mediainfo"; confirm_exit = true; }
          { command = "mpv"; args = [ "--mute" "on" "--" ]; fork = true; silent = true; }
        ];

        text_default = [
          { command = "nvim"; }
        ];

        reader_default = [
          { command = "zathura"; fork = true; silent = true; }
        ];

        libreoffice_default = [
          { command = "libreoffice"; fork = true; silent = true; }
        ];
      };

      extension = {
        ## image formats
        avif."inherit" = "image_default";
        bmp."inherit" = "image_default";
        gif."inherit" = "image_default";
        heic."inherit" = "image_default";
        jpeg."inherit" = "image_default";
        jpe."inherit" = "image_default";
        jpg."inherit" = "image_default";
        pgm."inherit" = "image_default";
        png."inherit" = "image_default";
        ppm."inherit" = "image_default";
        webp."inherit" = "image_default";

        ## audio formats
        flac."inherit" = "audio_default";
        m4a."inherit" = "audio_default";
        mp3."inherit" = "audio_default";
        ogg."inherit" = "audio_default";
        wav."inherit" = "audio_default";

        ## video formats
        avi."inherit" = "video_default";
        av1."inherit" = "video_default";
        flv."inherit" = "video_default";
        mkv."inherit" = "video_default";
        m4v."inherit" = "video_default";
        mov."inherit" = "video_default";
        mp4."inherit" = "video_default";
        ts."inherit" = "video_default";
        webm."inherit" = "video_default";
        wmv."inherit" = "video_default";

        ## text formats
        build."inherit" = "text_default";
        c."inherit" = "text_default";
        cmake."inherit" = "text_default";
        conf."inherit" = "text_default";
        cpp."inherit" = "text_default";
        css."inherit" = "text_default";
        csv."inherit" = "text_default";
        cu."inherit" = "text_default";
        ebuild."inherit" = "text_default";
        eex."inherit" = "text_default";
        env."inherit" = "text_default";
        ex."inherit" = "text_default";
        exs."inherit" = "text_default";
        go."inherit" = "text_default";
        h."inherit" = "text_default";
        hpp."inherit" = "text_default";
        hs."inherit" = "text_default";
        html."inherit" = "text_default";
        ini."inherit" = "text_default";
        java."inherit" = "text_default";
        js."inherit" = "text_default";
        json."inherit" = "text_default";
        kt."inherit" = "text_default";
        lock."inherit" = "text_default";
        lua."inherit" = "text_default";
        log."inherit" = "text_default";
        md."inherit" = "text_default";
        micro."inherit" = "text_default";
        ninja."inherit" = "text_default";
        py."inherit" = "text_default";
        rkt."inherit" = "text_default";
        rs."inherit" = "text_default";
        scss."inherit" = "text_default";
        sh."inherit" = "text_default";
        srt."inherit" = "text_default";
        svelte."inherit" = "text_default";
        toml."inherit" = "text_default";
        tsx."inherit" = "text_default";
        txt."inherit" = "text_default";
        vim."inherit" = "text_default";
        xml."inherit" = "text_default";
        yaml."inherit" = "text_default";
        yml."inherit" = "text_default";

        # archive formats
        "7z".app_list = [{ command = "7z"; args = [ "x" ]; confirm_exit = true; }];
        rar.app_list = [
          { command = "unar"; confirm_exit = true; }
          { command = "file-roller"; fork = true; silent = true; }
        ];
        zip.app_list = [
          { command = "unzip"; confirm_exit = true; }
          { command = "file-roller"; fork = true; silent = true; }
        ];

        # misc formats
        aup.app_list = [
          { command = "audacity"; fork = true; silent = true; }
        ];

        odt."inherit" = "libreoffice_default";
        odf."inherit" = "libreoffice_default";
        ods."inherit" = "libreoffice_default";
        odp."inherit" = "libreoffice_default";

        doc."inherit" = "libreoffice_default";
        docx."inherit" = "libreoffice_default";
        xls."inherit" = "libreoffice_default";
        xlsx."inherit" = "libreoffice_default";
        ppt."inherit" = "libreoffice_default";
        pptx."inherit" = "libreoffice_default";

        pdf."inherit" = "reader_default";

        kra.app_list = [
          { command = "krita"; fork = true; silent = true; }
        ];
        kdenlive.app_list = [
          { command = "kdenlive"; fork = true; silent = true; }
        ];

        tex.app_list = [
          { command = "micro"; }
          { command = "gedit"; fork = true; silent = true; }
          { command = "bat"; confirm_exit = true; }
          { command = "pdflatex"; }
        ];

        torrent.app_list = [
          { command = "transmission-gtk"; }
        ];
      };

      mimetype = {
        application.subtype.octet-stream."inherit" = "video_default";
        text."inherit" = "text_default";
        video."inherit" = "video_default";
      };
    };

    keymap = {
      default_view = {
        keymap = [
          { keys = [ "escape" ]; command = "escape"; }
          { keys = [ "ctrl+t" ]; command = "new_tab"; }
          { keys = [ "alt+t" ]; command = "new_tab --cursor"; }
          { keys = [ "T" ]; command = "new_tab --current"; }
          { keys = [ "W" ]; command = "close_tab"; }
          { keys = [ "ctrl+w" ]; command = "close_tab"; }
          { keys = [ "q" ]; command = "close_tab"; }
          { keys = [ "ctrl+c" ]; command = "quit"; }
          { keys = [ "o" ]; command = "quit --output-selected-files"; }

          { keys = [ "R" ]; command = "reload_dirlist"; }
          { keys = [ "z" "h" ]; command = "toggle_hidden"; }
          { keys = [ "ctrl+h" ]; command = "toggle_hidden"; }
          { keys = [ "\t" ]; command = "tab_switch 1"; }
          { keys = [ "backtab" ]; command = "tab_switch -1"; }

          { keys = [ "alt+1" ]; command = "tab_switch_index 1"; }
          { keys = [ "alt+2" ]; command = "tab_switch_index 2"; }
          { keys = [ "alt+3" ]; command = "tab_switch_index 3"; }
          { keys = [ "alt+4" ]; command = "tab_switch_index 4"; }
          { keys = [ "alt+5" ]; command = "tab_switch_index 5"; }

          { keys = [ "1" ]; command = "numbered_command 1"; }
          { keys = [ "2" ]; command = "numbered_command 2"; }
          { keys = [ "3" ]; command = "numbered_command 3"; }
          { keys = [ "4" ]; command = "numbered_command 4"; }
          { keys = [ "5" ]; command = "numbered_command 5"; }
          { keys = [ "6" ]; command = "numbered_command 6"; }
          { keys = [ "7" ]; command = "numbered_command 7"; }
          { keys = [ "8" ]; command = "numbered_command 8"; }
          { keys = [ "9" ]; command = "numbered_command 9"; }

          # arrow keys
          { keys = [ "arrow_up" ]; command = "cursor_move_up"; }
          { keys = [ "arrow_down" ]; command = "cursor_move_down"; }
          { keys = [ "arrow_left" ]; command = "cd .."; }
          { keys = [ "arrow_right" ]; command = "open"; }
          { keys = [ "\n" ]; command = "open"; }
          { keys = [ "home" ]; command = "cursor_move_home"; }
          { keys = [ "end" ]; command = "cursor_move_end"; }
          { keys = [ "page_up" ]; command = "cursor_move_page_up"; }
          { keys = [ "page_down" ]; command = "cursor_move_page_down"; }
          { keys = [ "ctrl+u" ]; command = "cursor_move_page_up 0.5"; }
          { keys = [ "ctrl+d" ]; command = "cursor_move_page_down 0.5"; }

          # vim-like keybindings
          { keys = [ "j" ]; command = "cursor_move_down"; }
          { keys = [ "k" ]; command = "cursor_move_up"; }
          { keys = [ "h" ]; command = "cd .."; }
          { keys = [ "l" ]; command = "open"; }
          { keys = [ "g" "g" ]; command = "cursor_move_home"; }
          { keys = [ "G" ]; command = "cursor_move_end"; }
          { keys = [ "r" ]; command = "open_with"; }

          { keys = [ "H" ]; command = "cursor_move_page_home"; }
          { keys = [ "L" ]; command = "cursor_move_page_middle"; }
          { keys = [ "M" ]; command = "cursor_move_page_end"; }

          { keys = [ "[" ]; command = "parent_cursor_move_up"; }
          { keys = [ "]" ]; command = "parent_cursor_move_down"; }

          { keys = [ "c" "d" ]; command = ":cd "; }
          { keys = [ "d" "d" ]; command = "cut_files"; }
          { keys = [ "y" "y" ]; command = "copy_files"; }
          { keys = [ "y" "n" ]; command = "copy_filename"; }
          { keys = [ "y" "." ]; command = "copy_filename_without_extension"; }
          { keys = [ "y" "p" ]; command = "copy_filepath"; }
          { keys = [ "y" "d" ]; command = "copy_dirpath"; }

          { keys = [ "p" "l" ]; command = "symlink_files --relative=false"; }
          { keys = [ "p" "L" ]; command = "symlink_files --relative=true"; }

          { keys = [ "delete" ]; command = "delete_files"; }
          { keys = [ "d" "D" ]; command = "delete_files"; }
          { keys = [ "D" ]; command = "delete_files"; }

          { keys = [ "p" "p" ]; command = "paste_files"; }
          { keys = [ "p" "o" ]; command = "paste_files --overwrite=true"; }

          { keys = [ "a" ]; command = "rename_append"; }
          { keys = [ "A" ]; command = "rename_prepend"; }

          { keys = [ "f" "t" ]; command = ":touch "; }

          { keys = [ " " ]; command = "select --toggle=true"; }
          { keys = [ "t" ]; command = "select --all=true --toggle=true"; }
          { keys = [ "V" ]; command = "toggle_visual"; }

          { keys = [ "w" ]; command = "show_tasks --exit-key=w"; }
          { keys = [ "b" "b" ]; command = "bulk_rename"; }
          { keys = [ "=" ]; command = "set_mode"; }

          { keys = [ ":" ]; command = ":"; }
          { keys = [ ";" ]; command = ":"; }

          { keys = [ "'" ]; command = ":shell "; }
          { keys = [ "m" "k" ]; command = ":mkdir "; }
          { keys = [ "c" "w" ]; command = ":rename "; }

          { keys = [ "/" ]; command = ":search "; }
          { keys = [ "|" ]; command = ":search_inc "; }
          { keys = [ "\\" ]; command = ":search_glob "; }
          { keys = [ "S" ]; command = "search_fzf"; }
          { keys = [ "C" ]; command = "subdir_fzf"; }

          { keys = [ "n" ]; command = "search_next"; }
          { keys = [ "N" ]; command = "search_prev"; }

          { keys = [ "s" "r" ]; command = "sort reverse"; }
          { keys = [ "s" "l" ]; command = "sort lexical"; }
          { keys = [ "s" "m" ]; command = "sort mtime"; }
          { keys = [ "s" "n" ]; command = "sort natural"; }
          { keys = [ "s" "s" ]; command = "sort size"; }
          { keys = [ "s" "e" ]; command = "sort ext"; }

          { keys = [ "m" "s" ]; command = "linemode size"; }
          { keys = [ "m" "m" ]; command = "linemode mtime"; }
          { keys = [ "m" "M" ]; command = "linemode sizemtime"; }

          { keys = [ "g" "r" ]; command = "cd /"; }
          { keys = [ "g" "c" ]; command = "cd ~/.config"; }
          { keys = [ "g" "d" ]; command = "cd ~/ダウンロード"; }
          { keys = [ "g" "e" ]; command = "cd /etc"; }
          { keys = [ "g" "h" ]; command = "cd ~/"; }
          { keys = [ "?" ]; command = "help"; }
        ];
      };

      task_view = {
        keymap = [
          # arrow keys
          { keys = [ "arrow_up" ]; command = "cursor_move_up"; }
          { keys = [ "arrow_down" ]; command = "cursor_move_down"; }
          { keys = [ "home" ]; command = "cursor_move_home"; }
          { keys = [ "end" ]; command = "cursor_move_end"; }

          # vim-like keybindings
          { keys = [ "j" ]; command = "cursor_move_down"; }
          { keys = [ "k" ]; command = "cursor_move_up"; }
          { keys = [ "g" "g" ]; command = "cursor_move_home"; }
          { keys = [ "G" ]; command = "cursor_move_end"; }

          { keys = [ "w" ]; command = "show_tasks"; }
          { keys = [ "escape" ]; command = "show_tasks"; }
        ];
      };

      help_view = {
        keymap = [
          # arrow keys
          { keys = [ "arrow_up" ]; command = "cursor_move_up"; }
          { keys = [ "arrow_down" ]; command = "cursor_move_down"; }
          { keys = [ "home" ]; command = "cursor_move_home"; }
          { keys = [ "end" ]; command = "cursor_move_end"; }

          # vim-like keybindings
          { keys = [ "j" ]; command = "cursor_move_down"; }
          { keys = [ "k" ]; command = "cursor_move_up"; }
          { keys = [ "g" "g" ]; command = "cursor_move_home"; }
          { keys = [ "G" ]; command = "cursor_move_end"; }

          { keys = [ "w" ]; command = "show_tasks"; }
          { keys = [ "escape" ]; command = "show_tasks"; }
        ];
      };
    };

    theme = {
      selection = {
        fg = "light_yellow";
        bold = true;
      };

      visual_mode_selection = {
        fg = "light_red";
        bold = true;
      };

      selection.prefix = {
        prefix = "  ";
        size = 2;
      };

      executable = {
        fg = "light_green";
        bold = true;
      };

      regular = {
        fg = "white";
      };

      directory = {
        fg = "light_blue";
        bold = true;
      };

      link = {
        fg = "cyan";
        bold = true;
      };

      link_invalid = {
        fg = "red";
        bold = true;
      };

      socket = {
        fg = "light_magenta";
        bold = true;
      };

      ext = {
        bmp.fg = "yellow";
        gif.fg = "yellow";
        heic.fg = "yellow";
        jpg.fg = "yellow";
        jpeg.fg = "yellow";
        pgm.fg = "yellow";
        png.fg = "yellow";
        ppm.fg = "yellow";
        svg.fg = "yellow";

        wav.fg = "magenta";
        flac.fg = "magenta";
        mp3.fg = "magenta";
        amr.fg = "magenta";

        avi.fg = "magenta";
        flv.fg = "magenta";
        m3u.fg = "magenta";
        m4a.fg = "magenta";
        m4v.fg = "magenta";
        mkv.fg = "magenta";
        mov.fg = "magenta";
        mp4.fg = "magenta";
        mpg.fg = "magenta";
        rmvb.fg = "magenta";
        webm.fg = "magenta";
        wmv.fg = "magenta";

        "7z".fg = "red";
        bz2.fg = "red";
        gz.fg = "red";
        rar.fg = "red";
        tar.fg = "red";
        tgz.fg = "red";
        xz.fg = "red";
        zip.fg = "red";
      };
    };
  };

  xdg.configFile = {
    "joshuto/preview.sh" = {
      executable = true;
      text = /* bash */ ''
        #!/usr/bin/env bash

        IFS=$'\n'
        set -o noclobber -o noglob -o nounset -o pipefail

        FILE_PATH=""
        PREVIEW_WIDTH=10
        PREVIEW_HEIGHT=10

        while [ "$#" -gt 0 ]; do
          case "$1" in
            "--path")
              shift
              FILE_PATH="$1"
              ;;
            "--preview-width")
              shift
              PREVIEW_WIDTH="$1"
              ;;
            "--preview-height")
              shift
              PREVIEW_HEIGHT="$1"
              ;;
          esac
          shift
        done

        realpath=$(realpath "$FILE_PATH")

        handle_extension() {
            case "''${FILE_EXTENSION_LOWER}" in
                lock)
                    cat "''${FILE_PATH}" && exit 0
                    exit 1;;

                rar)
                    lsar "''${FILE_PATH}" && exit 0
                    exit 1;;
                7z)
                    7z l -p -- "''${FILE_PATH}" && exit 0
                    exit 1;;

                pdf)
                    pdftotext -l 10 -nopgbrk -q -- "''${FILE_PATH}" - | \
                        fmt -w "''${PREVIEW_WIDTH}" && exit 0
                    mutool draw -F txt -i -- "''${FILE_PATH}" 1-10 | \
                        fmt -w "''${PREVIEW_WIDTH}" && exit 0
                    exiftool "''${FILE_PATH}" && exit 0
                    exit 1;;

                torrent)
                    transmission-show -- "''${FILE_PATH}" && exit 0
                    exit 1;;

                json)
                    jq --color-output . "''${FILE_PATH}" && exit 0
                    ;;
            esac
        }

        handle_mime() {
          local mimetype="''${1}"

          case "''${mimetype}" in
                ## Text
                text/* | */xml)
                    bat --color=always --paging=never \
            --style=plain \
            --terminal-width="''${PREVIEW_WIDTH}" \
             "''${FILE_PATH}" && exit 0
                    cat "''${FILE_PATH}" && exit 0
                    exit 1;;

                ## Image
                image/*)
                    exit 5;;

                ## Video and audio
                video/* | audio/*)
                    echo "$realpath"
                    mediainfo "''${FILE_PATH}" && exit 0
                    exiftool "''${FILE_PATH}" && exit 0
                    exit 1;;
            esac
        }

        FILE_EXTENSION="''${FILE_PATH##*.}"
        FILE_EXTENSION_LOWER="$(printf "%s" "''${FILE_EXTENSION}" | tr '[:upper:]' '[:lower:]')"
        handle_extension
        MIMETYPE="$( file --dereference --brief --mime-type -- "''${FILE_PATH}" )"
        handle_mime "''${MIMETYPE}"

        exit 1
      '';
    };

    "joshuto/kitty-show.sh" = {
      executable = true;
      text = /* bash */ ''
        #!/usr/bin/env bash

        FILE_PATH="$1"			# Full path of the previewed file
        PREVIEW_X_COORD="$2"		# x coordinate of upper left cell of preview area
        PREVIEW_Y_COORD="$3"		# y coordinate of upper left cell of preview area
        PREVIEW_WIDTH="$4"		# Width of the preview pane (number of fitting characters)
        PREVIEW_HEIGHT="$5"		# Height of the preview pane (number of fitting characters)

        TMP_FILE="$HOME/.cache/joshuto/thumbcache.png"

        mimetype=$(file --mime-type -Lb "$FILE_PATH")

        function image {
          kitty +kitten icat \
            --transfer-mode=file \
            --clear 2>/dev/null
          kitty +kitten icat \
            --transfer-mode=file \
            --place "''${PREVIEW_WIDTH}x''${PREVIEW_HEIGHT}@''${PREVIEW_X_COORD}x''${PREVIEW_Y_COORD}" \
            "$1" 2>/dev/null
        }

        case "$mimetype" in
          image/*)
            image "''${FILE_PATH}"
            ;;
          *)
            kitty +kitten icat \
              --transfer-mode=file \
              --clear 2>/dev/null
            ;;
        esac
      '';
    };

    "joshuto/kitty-remove.sh" = {
      executable = true;
      text = /* bash */ ''
        #!/usr/bin/env bash

        kitty +kitten icat --transfer-mode=file --clear 2>/dev/null
      '';
    };
  };

  xdg.configFile."joshuto/icons.toml".text = /* toml */ ''
    # Default fallback icons
    [defaults]
    file = ""
    directory = ""

    # Directory exact match icons
    [directory_exact]
    # English
    ".git" = ""
    "Desktop" = ""
    "ドキュメント" = ""
    "ダウンロード" = ""
    "nix-config" = ""
    "音楽" = ""
    "画像" = ""
    "Public" = ""
    "Templates" = ""
    "ビデオ" = ""

    # File exact match icons
    [file_exact]
    ".bash_aliases" = ""
    ".bash_history" = ""
    ".bash_logout" = ""
    ".bash_profile" = ""
    ".bashprofile" = ""
    ".bashrc" = ""
    ".dmrc" = ""
    ".DS_Store" = ""
    ".fasd" = ""
    ".fehbg" = ""
    ".gitattributes" = ""
    ".gitconfig" = ""
    ".gitignore" = ""
    ".gitlab-ci.yml" = ""
    ".gvimrc" = ""
    ".inputrc" = ""
    ".jack-settings" = ""
    ".mime.types" = ""
    ".ncmpcpp" = ""
    ".nvidia-settings-rc" = ""
    ".pam_environment" = ""
    ".profile" = ""
    ".recently-used" = ""
    ".selected_editor" = ""
    ".vim" = ""
    ".viminfo" = ""
    ".vimrc" = ""
    ".Xauthority" = ""
    ".Xdefaults" = ""
    ".xinitrc" = ""
    ".xinputrc" = ""
    ".Xresources" = ""
    ".zshrc" = ""
    "_gvimrc" = ""
    "_vimrc" = ""
    "a.out" = ""
    "authorized_keys" = ""
    "bspwmrc" = ""
    "cmakelists.txt" = ""
    "config" = ""
    "config.ac" = ""
    "config.m4" = ""
    "config.mk" = ""
    "config.ru" = ""
    "configure" = ""
    "docker-compose.yml" = ""
    "dockerfile" = ""
    "Dockerfile" = ""
    "dropbox" = ""
    "exact-match-case-sensitive-1.txt" = "X1"
    "exact-match-case-sensitive-2" = "X2"
    "favicon.ico" = ""
    "gemfile" = ""
    "gruntfile.coffee" = ""
    "gruntfile.js" = ""
    "gruntfile.ls" = ""
    "gulpfile.coffee" = ""
    "gulpfile.js" = ""
    "gulpfile.ls" = ""
    "ini" = ""
    "known_hosts" = ""
    "ledger" = ""
    "license" = ""
    "LICENSE" = ""
    "LICENSE.md" = ""
    "LICENSE.txt" = ""
    "Makefile" = ""
    "makefile" = ""
    "Makefile.ac" = ""
    "Makefile.in" = ""
    "mimeapps.list" = ""
    "mix.lock" = ""
    "node_modules" = ""
    "package-lock.json" = ""
    "package.json" = ""
    "playlists" = ""
    "procfile" = ""
    "Rakefile" = ""
    "rakefile" = ""
    "react.jsx" = ""
    "README" = ""
    "README.markdown" = ""
    "README.md" = ""
    "README.rst" = ""
    "README.txt" = ""
    "sxhkdrc" = ""
    "user-dirs.dirs" = ""
    "webpack.config.js" = ""

    # File extension match
    [ext]
    "7z" = ""
    "a" = ""
    "ai" = ""
    "apk" = ""
    "asm" = ""
    "asp" = ""
    "aup" = ""
    "avi" = ""
    "awk" = ""
    "bash" = ""
    "bat" = ""
    "bmp" = ""
    "bz2" = ""
    "c" = ""
    "c++" = ""
    "cab" = ""
    "cbr" = ""
    "cbz" = ""
    "cc" = ""
    "class" = ""
    "clj" = ""
    "cljc" = ""
    "cljs" = ""
    "cmake" = ""
    "coffee" = ""
    "conf" = ""
    "cp" = ""
    "cpio" = ""
    "cpp" = ""
    "cs" = ""
    "csh" = ""
    "css" = ""
    "cue" = ""
    "cvs" = ""
    "cxx" = ""
    "d" = ""
    "dart" = ""
    "db" = ""
    "deb" = ""
    "diff" = ""
    "dll" = ""
    "doc" = ""
    "docx" = ""
    "dump" = ""
    "edn" = ""
    "eex" = ""
    "efi" = ""
    "ejs" = ""
    "elf" = ""
    "elm" = ""
    "epub" = ""
    "erl" = ""
    "ex" = ""
    "exe" = ""
    "exs" = ""
    "f//" = ""
    "fifo" = "|"
    "fish" = ""
    "flac" = ""
    "flv" = ""
    "fs" = ""
    "fsi" = ""
    "fsscript" = ""
    "fsx" = ""
    "gem" = ""
    "gemspec" = ""
    "gif" = ""
    "go" = ""
    "gz" = ""
    "gzip" = ""
    "h" = ""
    "haml" = ""
    "hbs" = ""
    "hh" = ""
    "hpp" = ""
    "hrl" = ""
    "hs" = ""
    "htaccess" = ""
    "htm" = ""
    "html" = ""
    "htpasswd" = ""
    "hxx" = ""
    "ico" = ""
    "img" = ""
    "ini" = ""
    "iso" = ""
    "jar" = ""
    "java" = ""
    "jl" = ""
    "jpeg" = ""
    "jpg" = ""
    "js" = ""
    "json" = ""
    "jsx" = ""
    "key" = ""
    "ksh" = ""
    "leex" = ""
    "less" = ""
    "lha" = ""
    "lhs" = ""
    "log" = ""
    "lua" = ""
    "lzh" = ""
    "lzma" = ""
    "m4a" = ""
    "m4v" = ""
    "markdown" = ""
    "md" = ""
    "mdx" = ""
    "mjs" = ""
    "mkv" = ""
    "ml" = "λ"
    "mli" = "λ"
    "mov" = ""
    "mp3" = ""
    "mp4" = ""
    "mpeg" = ""
    "mpg" = ""
    "msi" = ""
    "mustache" = ""
    "nix" = ""
    "o" = ""
    "ogg" = ""
    "pdf" = ""
    "php" = ""
    "pl" = ""
    "pm" = ""
    "png" = ""
    "pp" = ""
    "ppt" = ""
    "pptx" = ""
    "ps1" = ""
    "psb" = ""
    "psd" = ""
    "pub" = ""
    "py" = ""
    "pyc" = ""
    "pyd" = ""
    "pyo" = ""
    "r" = "ﳒ"
    "rake" = ""
    "rar" = ""
    "rb" = ""
    "rc" = ""
    "rlib" = ""
    "rmd" = ""
    "rom" = ""
    "rpm" = ""
    "rproj" = "鉶"
    "rs" = ""
    "rss" = ""
    "rtf" = ""
    "s" = ""
    "sass" = ""
    "scala" = ""
    "scss" = ""
    "sh" = ""
    "slim" = ""
    "sln" = ""
    "so" = ""
    "sql" = ""
    "styl" = ""
    "suo" = ""
    "swift" = ""
    "t" = ""
    "tar" = ""
    "tex" = "ﭨ"
    "tgz" = ""
    "toml" = ""
    "ts" = ""
    "tsx" = ""
    "twig" = ""
    "vim" = ""
    "vimrc" = ""
    "vue" = "﵂"
    "wav" = ""
    "webm" = ""
    "webmanifest" = ""
    "webp" = ""
    "xbps" = ""
    "xcplayground" = ""
    "xhtml" = ""
    "xls" = ""
    "xlsx" = ""
    "xml" = ""
    "xul" = ""
    "xz" = ""
    "yaml" = ""
    "yml" = ""
    "zip" = ""
    "zsh" = ""
  '';
}
