Files
nixos/modules/apps/yazi.nix
T
2026-10-16 18:38:37 +02:00

80 lines
3.1 KiB
Nix

{ 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 = [ "<C-t>" ]; 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",
})
'';
};
}