Files
nixos/apps/yazi/default.nix
T
2026-01-11 11:03:42 -06:00

61 lines
1.5 KiB
Nix

{
pkgs,
config,
...
}: let
yazi-picker = pkgs.writeShellScriptBin "yazi-picker" ''
echo "--- $(date) ---" >> /tmp/yazi-picker.log
echo "Args: $@" >> /tmp/yazi-picker.log
echo "Env: WAYLAND_DISPLAY=$WAYLAND_DISPLAY DISPLAY=$DISPLAY" >> /tmp/yazi-picker.log
path="$1"
[ -z "$path" ] && path="."
if [ "$2" = "true" ]; then
echo "Mode: Save" >> /tmp/yazi-picker.log
# Future: handle save mode better (maybe prompts?)
else
echo "Mode: Open" >> /tmp/yazi-picker.log
fi
out="$HOME/.cache/yazi-chooser"
rm -f "$out"
echo "Launching ghostty..." >> /tmp/yazi-picker.log
${pkgs.ghostty}/bin/ghostty --class="yazi-picker" --title="File Picker" -e ${pkgs.yazi}/bin/yazi "$path" --chooser-file="$out"
ret=$?
echo "Ghostty exited with $ret" >> /tmp/yazi-picker.log
if [ -f "$out" ]; then
selected=$(cat "$out")
echo "Selected: $selected" >> /tmp/yazi-picker.log
echo "$selected"
rm "$out"
else
echo "No selection" >> /tmp/yazi-picker.log
fi
'';
in {
programs.yazi = {
enable = true;
enableFishIntegration = true;
settings = {
manager = {
show_hidden = true;
sort_by = "natural";
sort_dir_first = true;
linemode = "size";
};
};
};
home.packages = [
yazi-picker
];
xdg.configFile."xdg-desktop-portal-termfilechooser/config".text = ''
[filechooser]
cmd=${yazi-picker}/bin/yazi-picker
'';
}