feat(yazi): more directory shortcuts + nix helpers for adding more

Changed files
+24 -6
home
emily
cli
+24 -6
home/emily/cli/yazi/default.nix
··· 1 1 { config, lib, pkgs, ... }: 2 2 let 3 3 inherit (lib.trivial) importTOML; 4 + inherit (lib) stringToCharacters; 5 + inherit (builtins) elemAt; 4 6 in 5 7 { 6 8 programs.yazi = { ··· 13 15 ''; 14 16 settings = importTOML ./yazi.toml; 15 17 16 - keymap = { 17 - mgr.prepend_keymap = [ 18 - { 19 - run = "cd ${config.xdg.userDirs.pictures}"; 20 - on = [ "g" "p" ]; } 21 - ]; 18 + keymap = let 19 + genKeymapEntry = runCommand: keymapString: 20 + { 21 + run = "${runCommand}"; 22 + on = stringToCharacters keymapString; 23 + }; 24 + directoryJump = targetDirectory: shortcut: 25 + genKeymapEntry "cd ${targetDirectory}" shortcut; 26 + in { 27 + mgr.prepend_keymap = let 28 + makeJumps = list: 29 + map (a: directoryJump (elemAt a 0) (elemAt a 1)) list; 30 + in [ 31 + # (directoryJump config.xdg.userDirs.pictures "gp") 32 + # (directoryJump config.xdg.userDirs.videos "gv") 33 + ] ++ makeJumps (with config.xdg; [ 34 + [userDirs.pictures "gp"] 35 + [userDirs.videos "gv"] 36 + [userDirs.music "gm"] 37 + [userDirs.documents "gD"] 38 + ["/home/emily/dev" "gw"] 39 + ]); 22 40 }; 23 41 }; 24 42 home.shellAliases = {