{ pkgs, config, lib, ... }: with lib; let cfg = config.console.yazi; in { options = { console.yazi.enable = mkEnableOption "enable yazi file manager"; }; config = mkIf cfg.enable { programs.yazi = { enable = true; # file manager in rust enableNushellIntegration = true; settings = { opener = { open = [ { run = "xdg-open \"$@\""; orphan = true; desc = "Open"; } ]; edit = [ { run = "$EDITOR \"$@\""; block = true; desc = "Edit"; } ]; dragdrop = [ { run = "${pkgs.ripdrag}/bin/ripdrag \"$@\""; desc = "Drag'n'drop"; orphan = true; for = "unix"; } ]; }; open.rules = [ { mime = "text/*"; use = ["edit" "open" "dragdrop"]; } { name = "*.toml"; use = ["edit" "open" "dragdrop"]; } { name = "*.c"; use = ["edit" "open" "dragdrop"]; } { name = "*.cpp"; use = ["edit" "open" "dragdrop"]; } { name = "*.rs"; use = ["edit" "open" "dragdrop"]; } { name = "*.py"; use = ["edit" "open" "dragdrop"]; } { name = "*.json"; use = ["edit" "open" "dragdrop"]; } { name = "*"; use = ["open" "edit" "dragdrop"]; } ]; }; keymap = { manager.append_keymap = [ { on = [""]; run = ''shell '${pkgs.ripdrag}/bin/ripdrag -x "$@"' --confirm''; } ]; }; }; }; }