Skip to content

Commit

Permalink
yazi: add xonsh integration
Browse files Browse the repository at this point in the history
  • Loading branch information
inmaldrerah authored and pasqui23 committed Dec 10, 2024
1 parent f5b0284 commit fbf0439
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 0 deletions.
19 changes: 19 additions & 0 deletions modules/programs/yazi.nix
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,21 @@ let
rm -fp $tmp
}
'';

xonshIntegration = ''
def __yazi_init():
def yy(args):
tmp = $(mktemp -t "yazi-cwd.XXXXX").strip()
$[yazi @(args) @(f"--cwd-file={tmp}")]
cwd = fp"{tmp}".read_text()
if cwd != "" and cwd != $PWD:
xonsh.dirstack.cd((cwd,))
$[rm -f -- @(tmp)]
aliases['yy'] = yy
__yazi_init()
del __yazi_init
'';
in {
meta.maintainers = with maintainers; [ xyenon eljamm ];

Expand Down Expand Up @@ -72,6 +87,8 @@ in {
default = true;
};

enableXonshIntegration = mkEnableOption "Xonsh integration";

keymap = mkOption {
type = tomlFormat.type;
default = { };
Expand Down Expand Up @@ -208,6 +225,8 @@ in {
programs.nushell.extraConfig =
mkIf cfg.enableNushellIntegration nushellIntegration;

programs.xonsh.xonshrc = mkIf cfg.enableXonshIntegration xonshIntegration;

xdg.configFile = {
"yazi/keymap.toml" = mkIf (cfg.keymap != { }) {
source = tomlFormat.generate "yazi-keymap" cfg.keymap;
Expand Down
1 change: 1 addition & 0 deletions tests/modules/programs/yazi/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@
yazi-zsh-integration-enabled = ./zsh-integration-enabled.nix;
yazi-fish-integration-enabled = ./fish-integration-enabled.nix;
yazi-nushell-integration-enabled = ./nushell-integration-enabled.nix;
yazi-xonsh-integration-enabled = ./xonsh-integration-enabled.nix;
}
31 changes: 31 additions & 0 deletions tests/modules/programs/yazi/xonsh-integration-enabled.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{ ... }:

let
shellIntegration = ''
def __yazi_init():
def ya(args):
tmp = $(mktemp -t "yazi-cwd.XXXXX")
$[yazi @(args) @(f"--cwd-file={tmp}")]
cwd = fp"{tmp}".read_text()
if cwd != "" and cwd != $PWD:
xonsh.dirstack.cd(cwd)
$[rm -f -- @(tmp)]
aliases['ya'] = ya
__yazi_init()
del __yazi_init
'';
in {
programs.xonsh.enable = true;

programs.yazi = {
enable = true;
enableXonshIntegration = true;
};

test.stubs.yazi = { };

nmt.script = ''
assertFileContains home-files/.config/xonsh/rc.xsh '${shellIntegration}'
'';
}

0 comments on commit fbf0439

Please sign in to comment.