{ pkgs, config, ... }: let yazi-picker = pkgs.writeShellScriptBin "yazi-picker" '' echo "--- $(date) ---" >> /tmp/yazi-picker.log echo "Args: $@" >> /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 ''; }