{ pkgs, ... }:
{
  programs.yazi = {
    enable = true;
    package = pkgs.yazi;
    enableBashIntegration = true;
    enableZshIntegration = true;

    settings = {
      log = {
        enabled = true;
      };
      manager = {
        show_hidden = false;
        sort_by = "modified";
        sort_dir_first = true;
        sort_reverse = true;
      };
    };

    theme = {
      manager = {
        marker_copied = { fg = "#98bb6c"; bg = "#98bb6c"; };
        marker_cut = { fg = "#e46876"; bg = "#e46876"; };
        marker_marked = { fg = "#957fb8"; bg = "#957fb8"; };
        marker_selected = { fg = "#ffa066"; bg = "#ffa066"; };
        cwd = { fg = "#e6c384"; };
        hovered = { reversed = true; };
        preview_hovered = { reversed = true; };
        tab_active = { reversed = true; };
        tab_inactive = { };
        tab_width = 1;
        count_copied = { fg = "#1f1f28"; bg = "#98bb6c"; };
        count_cut = { fg = "#1f1f28"; bg = "#e46876"; };
        count_selected = { fg = "#1f1f28"; bg = "#e6c384"; };
        border_symbol = "│";
        border_style = { fg = "#dcd7ba"; };
      };

      status = {
        separator_open = "";
        separator_close = "";
        separator_style = { fg = "reset"; bg = "#363646"; };
        mode_normal = { fg = "#1f1f28"; bg = "#85a6ea"; bold = true; };
        mode_select = { fg = "#1f1f28"; bg = "#957fb8"; bold = true; };
        mode_unset = { fg = "#1f1f28"; bg = "#e6c384"; bold = true; };
        progress_label = { fg = "#85a6ea"; bg = "#363646"; bold = true; };
        progress_normal = { fg = "#363646"; bg = "#1f1f28"; };
        progress_error = { fg = "#363646"; bg = "#1f1f28"; };
        permissions_t = { fg = "#98bb6c"; };
        permissions_r = { fg = "#e6c384"; };
        permissions_w = { fg = "#e82424"; };
        permissions_x = { fg = "#7aa89f"; };
        permissions_s = { fg = "#938aa9"; };
      };

      select = {
        border = { fg = "#7fb4ca"; };
        active = { fg = "#938aa9"; bold = true; };
        inactive = { };
      };

      input = {
        border = { fg = "#7fb4ca"; };
        title = { };
        value = { };
        selected = { reversed = true; };
      };

      completion = {
        border = { fg = "#7fb4ca"; };
        active = { reversed = true; };
        inactive = { };
      };

      tasks = {
        border = { fg = "#7fb4ca"; };
        title = { };
        hovered = { fg = "#938aa9"; };
      };

      which = {
        cols = 2;
        separator = " - ";
        separator_style = { fg = "#727169"; };
        mask = { bg = "#16161d"; };
        rest = { fg = "#727169"; };
        cand = { fg = "#85a6ea"; };
        desc = { fg = "#565666"; };
      };

      help = {
        on = { fg = "#7aa89f"; };
        run = { fg = "#938aa9"; };
        desc = { };
        hovered = { reversed = true; bold = true; };
        footer = { fg = "#090618"; bg = "#dcd7ba"; };
      };

      notify = {
        title_info = { fg = "#98bb6c"; };
        title_warn = { fg = "#e6c384"; };
        title_error = { fg = "#e82424"; };
      };

      filetype = {
        rules = [
          { mime = "image/*"; fg = "#e6c384"; }
          { mime = "{audio,video}/*"; fg = "#957fb8"; }
          { mime = "application/{,g}zip"; fg = "#e46876"; }
          { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}"; fg = "#e46876"; }
          { mime = "application/{pdf,doc,rtf,vnd.*}"; fg = "#6a9589"; }
          { name = "*"; is = "orphan"; fg = "#e46876"; }
          { name = "*"; is = "exec"; fg = "#957fb8"; }
          { name = "*/"; fg = "#85a6ea"; }
        ];
      };
    };
  };
}