{ pkgs, ... }: let tomlGenerate = (pkgs.formats.toml { }).generate; bashIntegration = '' function ya() { tmp="$(mktemp -t "yazi-cwd.XXXXX")" yazi --cwd-file="$tmp" if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then cd -- "$cwd" fi rm -f -- "$tmp" } ''; in { home.packages = [ pkgs.unstable_pkgs.yazi pkgs.ffmpegthumbnailer pkgs.exiftool pkgs.mediainfo ]; xdg.configFile."yazi/yazi.toml".source = tomlGenerate "yazi.toml" { manager = { sort_by = "natural"; sort_dir_first = true; sort_reverse = false; }; opener = { folder = [ { exec = ''xdg-open "$@"''; display_name = "Open folder"; } { exec = ''$EDITOR "$@"''; } ]; archive = [ { exec = ''file-roller "$1"''; display_name = "Open with File Roller"; } { exec = ''unar "$1"''; display_name = "Extract here"; } ]; text = [ { exec = ''$EDITOR "$@"''; block = true; display_name = "Open with editor"; } ]; image = [ { exec = ''xdg-open "$@"''; display_name = "Open"; } { exec = '''exiftool "$1"; echo "Press enter to exit"; read''; block = true; display_name = "Show EXIF"; } ]; video = [ { exec = ''mpv "$@"''; } { exec = ''mediainfo "$1"; echo "Press enter to exit"; read''; block = true; display_name = "Show media info"; } ]; audio = [ { exec = ''mpv "$@"''; } { exec = '''mediainfo "$1"; echo "Press enter to exit"; read''; block = true; display_name = "Show media info"; } ]; fallback = [ { exec = ''xdg-open "$@"''; display_name = "Open"; } { exec = ''bat --pagin=always "$@"''; block = true; display_name = "Open with bat"; } { exec = ''$EDITOR "$@"''; block = true; display_name = "Open with editor"; } ]; }; }; # programs.yazi = { # enable = true; # enableBashIntegration = true; # enableZshIntegration = true; # }; programs.bash.initExtra = bashIntegration; programs.zsh.initExtra = bashIntegration; }