nix-dotfiles/hm/modules/yazi.nix
2025-09-08 11:36:45 +02:00

73 lines
2.7 KiB
Nix

{ pkgs, ... }:
{
home = {
packages = [
pkgs.ffmpegthumbnailer
pkgs.exiftool
pkgs.mediainfo
pkgs.unar
pkgs.celluloid
];
};
programs.yazi = {
enable = true;
enableBashIntegration = true;
enableNushellIntegration = true;
enableZshIntegration = true;
shellWrapperName = "y";
settings = {
mgr = {
sort_by = "natural";
sort_dir_first = true;
sort_reverse = false;
};
keymap = [
{ exec = "<C-s>"; on = [ "shell zsh --block --confirm" ]; }
];
opener = {
folder = [
{ run = ''nemo "$@"''; display_name = "Nemo"; }
{ run = ''xdg-open "$@"''; display_name = "Open folder"; }
{ run = ''$VISUAL "$@"''; }
];
archive = [
{ run = ''file-roller "$1"''; display_name = "Open with File Roller"; }
{ run = ''unar "$1"''; display_name = "Extract here"; }
{ run = ''xdg-open "$@"''; display_name = "Open with default"; }
{ run = ''$VISUAL "$@"''; }
];
text = [
{ run = ''$VISUAL "$@"''; }
{ run = ''nvim "$@"''; block = true; display_name = "Open with NeoVIM"; }
{ run = ''hx "$@"''; block = true; display_name = "Open with Helix"; }
{ run = ''bat --pagin=always "$@"''; block = true; display_name = "Open with bat"; }
];
image = [
{ run = ''xdg-open "$@"''; display_name = "Open"; }
{ run = ''eog "$@"''; display_name = "Open with EOG"; }
{ run = '''exiftool "$1"; echo "Press enter to exit"; read''; block = true; display_name = "Show EXIF"; }
];
video = [
{ run = ''celluloid "$@"''; display_name = "Open with Celluloid"; }
{ run = ''totem "$@"''; display_name = "Open with Totem"; }
{ run = ''mediainfo "$1"; echo "Press enter to exit"; read''; block = true; display_name = "Show media info"; }
{ run = ''xdg-open "$@"''; display_name = "Open with default"; }
{ run = ''$VISUAL "$@"''; }
];
audio = [
{ run = ''celluloid "$@"''; display_name = "Open with Celluloid"; }
{ run = '''mediainfo "$1"; echo "Press enter to exit"; read''; block = true; display_name = "Show media info"; }
{ run = ''xdg-open "$@"''; display_name = "Open with default"; }
{ run = ''$VISUAL "$@"''; }
];
fallback = [{ run = ''xdg-open "$@"''; display_name = "Open"; }
{ run = ''bat --pagin=always "$@"''; block = true; display_name = "Open with bat"; }
{ run = ''$VISUAL "$@"''; block = true; display_name = "Open with editor"; }
{ run = ''$EDITOR "$@"''; block = true; display_name = "Open with editor"; }];
};
};
};
}