{ pkgs, # config, lib, ... }: { programs.yazi = { shellWrapperName = "y"; settings = { opener = { open = [ { run = "xdg-open \"$@\""; orphan = true; desc = "Open"; } ]; edit = [ { run = "$EDITOR \"$@\""; block = true; desc = "Edit"; } ]; dragdrop = [ { run = "${lib.getExe pkgs.ripdrag} -ab \"$@\""; desc = "Drag'n'drop"; orphan = true; for = "unix"; } ]; }; open.rules = [ { mime = "text/*"; use = ["edit" "open" "dragdrop"]; } { name = "*.json"; use = ["edit" "open" "dragdrop"]; } { name = "*.yaml"; use = ["edit" "open" "dragdrop"]; } { name = "*.yml"; use = ["edit" "open" "dragdrop"]; } { name = "*.toml"; use = ["edit" "open" "dragdrop"]; } { name = "*.sh"; use = ["edit" "open" "dragdrop"]; } { name = "*.ini"; use = ["edit" "open" "dragdrop"]; } { name = "*.conf"; use = ["edit" "open" "dragdrop"]; } { name = "*.csv"; use = ["edit" "open" "dragdrop"]; } { name = "*.go"; use = ["edit" "open" "dragdrop"]; } { name = "*.html"; use = ["edit" "open" "dragdrop"]; } { name = "*.c"; use = ["edit" "open" "dragdrop"]; } { name = "*.cpp"; use = ["edit" "open" "dragdrop"]; } { name = "*.rs"; use = ["edit" "open" "dragdrop"]; } { name = "*.nix"; use = ["edit" "open" "dragdrop"]; } { name = "*.py"; use = ["edit" "open" "dragdrop"]; } { name = "*"; use = ["open" "edit" "dragdrop"]; } ]; }; }; }