mirror of
https://github.com/nix-community/home-manager
synced 2024-11-30 06:59:45 +01:00
yazi: add xonsh integration
This commit is contained in:
parent
0d1ef2568d
commit
f8405ccf87
3 changed files with 51 additions and 0 deletions
|
@ -39,6 +39,21 @@ let
|
||||||
rm -fp $tmp
|
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 {
|
in {
|
||||||
meta.maintainers = with maintainers; [ xyenon eljamm ];
|
meta.maintainers = with maintainers; [ xyenon eljamm ];
|
||||||
|
|
||||||
|
@ -64,6 +79,8 @@ in {
|
||||||
|
|
||||||
enableNushellIntegration = mkEnableOption "Nushell integration";
|
enableNushellIntegration = mkEnableOption "Nushell integration";
|
||||||
|
|
||||||
|
enableXonshIntegration = mkEnableOption "Xonsh integration";
|
||||||
|
|
||||||
keymap = mkOption {
|
keymap = mkOption {
|
||||||
type = tomlFormat.type;
|
type = tomlFormat.type;
|
||||||
default = { };
|
default = { };
|
||||||
|
@ -200,6 +217,8 @@ in {
|
||||||
programs.nushell.extraConfig =
|
programs.nushell.extraConfig =
|
||||||
mkIf cfg.enableNushellIntegration nushellIntegration;
|
mkIf cfg.enableNushellIntegration nushellIntegration;
|
||||||
|
|
||||||
|
programs.xonsh.xonshrc = mkIf cfg.enableXonshIntegration xonshIntegration;
|
||||||
|
|
||||||
xdg.configFile = {
|
xdg.configFile = {
|
||||||
"yazi/keymap.toml" = mkIf (cfg.keymap != { }) {
|
"yazi/keymap.toml" = mkIf (cfg.keymap != { }) {
|
||||||
source = tomlFormat.generate "yazi-keymap" cfg.keymap;
|
source = tomlFormat.generate "yazi-keymap" cfg.keymap;
|
||||||
|
|
|
@ -5,4 +5,5 @@
|
||||||
yazi-zsh-integration-enabled = ./zsh-integration-enabled.nix;
|
yazi-zsh-integration-enabled = ./zsh-integration-enabled.nix;
|
||||||
yazi-fish-integration-enabled = ./fish-integration-enabled.nix;
|
yazi-fish-integration-enabled = ./fish-integration-enabled.nix;
|
||||||
yazi-nushell-integration-enabled = ./nushell-integration-enabled.nix;
|
yazi-nushell-integration-enabled = ./nushell-integration-enabled.nix;
|
||||||
|
yazi-xonsh-integration-enabled = ./xonsh-integration-enabled.nix;
|
||||||
}
|
}
|
||||||
|
|
31
tests/modules/programs/yazi/xonsh-integration-enabled.nix
Normal file
31
tests/modules/programs/yazi/xonsh-integration-enabled.nix
Normal file
|
@ -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}'
|
||||||
|
'';
|
||||||
|
}
|
Loading…
Reference in a new issue