Files
nixos-blueprint/modules/home/programs/console/yazi.nix
unexplrd 8ab24f899f hosts/dunamis/users/user/programs.nix: go back to yazi
modules/home/programs/console/yazi.nix: add more open rules

Signed-off-by: unexplrd <unexplrd@linerds.us>
2025-04-09 13:26:14 +03:00

118 lines
2.6 KiB
Nix

{
pkgs,
config,
lib,
...
}: let
inherit (lib) mkIf mkEnableOption getExe;
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;
shellWrapperName = "y";
settings = {
opener = {
open = [
{
run = "xdg-open \"$@\"";
orphan = true;
desc = "Open";
}
];
edit = [
{
run = "$EDITOR \"$@\"";
block = true;
desc = "Edit";
}
];
dragdrop = [
{
run = "${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"];
}
];
};
};
};
}