2.home-manager/tests/modules/programs/yazi/nushell-integration-enabled.nix
Jesung Yang bba859cd85 yazi: fix unintended recursive calls
Use `command` (POSIX) and `^` (Nushell) to prevent recursive function
calls when `cfg.shellWrapperName` is set to "yazi".

Previously, if `cfg.shellWrapperName` was set to "yazi", the invocation
of `yazi` within the shell integration function triggered the function
itself instead of the binary. This name conflict prevents users from
using the binary name as-is when shell integration is enabled.

Hence, fix this by using shell-specific mechanisms to target the
underlying executable, bypassing any name collisions.

This aligns with the official documentation:
- 2c839b37c8/docs/quick-start.md (L29)
- 2c839b37c8/docs/quick-start.md (L56)
2026-01-15 15:28:09 -06:00

35 lines
730 B
Nix

{ pkgs, config, ... }:
let
shellIntegration = ''
def --env yy [...args] {
let tmp = (mktemp -t "yazi-cwd.XXXXX")
^yazi ...$args --cwd-file $tmp
let cwd = (open $tmp)
if $cwd != "" and $cwd != $env.PWD {
cd $cwd
}
rm -fp $tmp
}
'';
in
{
programs.nushell.enable = true;
programs.yazi = {
enable = true;
enableNushellIntegration = true;
};
nmt.script =
let
configPath =
if pkgs.stdenv.isDarwin && !config.xdg.enable then
"home-files/Library/Application Support/nushell/config.nu"
else
"home-files/.config/nushell/config.nu";
in
''
assertFileContains '${configPath}' '${shellIntegration}'
'';
}