{ config, lib, pkgs, ... }: let make_plugin = names: lib.listToAttrs (map (name: { name = name; value = { package = pkgs.yaziPlugins.${name}; setup = true; }; }) names); in { home-manager.users."djai" = { lib, config, ... }: { programs.yazi = { enable = true; enableFishIntegration = true; plugins = with pkgs.yaziPlugins; { duckdb = duckdb; jump-to-char = jump-to-char; yafg = { # FIXME: can not use fzf mode because of fish :/ package = yafg; setup = true; settings = { toggle-mode-key = "alt-r"; editor = "nvim"; args = [ "--noplugin" ]; file-arg-format = "+{row} {file}"; }; }; # FIXME: these don't work # compress = compress; # nil value unique_name issue # bookmarks = bookmarks; # rely on deprecated api # relative-motions = relative-motions; # nil value mgr_emit } // make_plugin ["starship" "close-and-restore-tab" "full-border"] ; keymap = { mgr.prepend_keymap = [ {on = [ "r" ]; description = "rename file"; run = "rename --empty=stem --cursor=start";} {on = [ "R" ]; description = "rename file (without empty)"; run = "rename --cursor=before_ext";} {on = [ "f" "m" "f" ]; description = "use fmf"; run = "plugin yafg";} {on = [ "F" ]; description = "Jump to char"; run = "plugin jump-to-char";} {on = [ "" ]; description = "Restore previously closed tab"; run = "plugin close-and-restore-tab restore";} # {on = [ "c" "a" "a" ]; description = "Archive selected files"; run = "plugin compress";} # {on = [ "c" "a" "p" ]; description = "Archive selected files (encrypted)"; run = "plugin compress -p";} # {on = [ "m" ]; description = "Save current position as bookmark "; run = "plugin bookmarks save";} # {on = [ "'" ]; description = "Jump to bookmark "; run = "plugin bookmarks jump";} # {on = [ "b" "d" ]; description = "Delete bookmark"; run = "plugin bookmarks delete";} # {on = [ "B" "D" ]; description = "Delete all bookmarks"; run = "plugin bookmarks delete_all";} # {on = [ "1" ]; run = "plugin relative-motions 1";} # {on = [ "2" ]; run = "plugin relative-motions 2";} # {on = [ "3" ]; run = "plugin relative-motions 3";} # {on = [ "4" ]; run = "plugin relative-motions 4";} # {on = [ "5" ]; run = "plugin relative-motions 5";} # {on = [ "6" ]; run = "plugin relative-motions 6";} # {on = [ "7" ]; run = "plugin relative-motions 7";} # {on = [ "8" ]; run = "plugin relative-motions 8";} # {on = [ "9" ]; run = "plugin relative-motions 9";} ]; }; }; # append extra init.lua stuff after home-manager generates the file xdg.configFile."yazi/init.lua".text ='' -- this is really for termfilechooser, where i want to start with the rename menu open ya.emit("rename", { empty = "stem", cursor = "start", }) ''; }; }