yazi: support plugins and flavors
This commit is contained in:
parent
a9b36cbe92
commit
04bc391a90
|
@ -40,17 +40,12 @@ let
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
in {
|
in {
|
||||||
meta.maintainers = [ maintainers.xyenon ];
|
meta.maintainers = with maintainers; [ xyenon ];
|
||||||
|
|
||||||
options.programs.yazi = {
|
options.programs.yazi = {
|
||||||
enable = mkEnableOption "yazi";
|
enable = mkEnableOption "yazi";
|
||||||
|
|
||||||
package = mkOption {
|
package = mkPackageOption pkgs "yazi" { };
|
||||||
type = types.package;
|
|
||||||
default = pkgs.yazi;
|
|
||||||
defaultText = literalExpression "pkgs.yazi";
|
|
||||||
description = "Yazi package to install.";
|
|
||||||
};
|
|
||||||
|
|
||||||
enableBashIntegration = mkEnableOption "Bash integration";
|
enableBashIntegration = mkEnableOption "Bash integration";
|
||||||
|
|
||||||
|
@ -135,6 +130,48 @@ in {
|
||||||
for the full list of options
|
for the full list of options
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
initLua = mkOption {
|
||||||
|
type = with types; nullOr path;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
The init.lua for Yazi itself.
|
||||||
|
'';
|
||||||
|
example = literalExpression "./init.lua";
|
||||||
|
};
|
||||||
|
|
||||||
|
plugins = mkOption {
|
||||||
|
type = with types; attrsOf (oneOf [ path package ]);
|
||||||
|
default = { };
|
||||||
|
description = ''
|
||||||
|
Lua plugins.
|
||||||
|
|
||||||
|
See https://yazi-rs.github.io/docs/plugins/overview/ for documentation.
|
||||||
|
'';
|
||||||
|
example = literalExpression ''
|
||||||
|
{
|
||||||
|
foo = ./foo;
|
||||||
|
bar = pkgs.bar;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
flavors = mkOption {
|
||||||
|
type = with types; attrsOf (oneOf [ path package ]);
|
||||||
|
default = { };
|
||||||
|
description = ''
|
||||||
|
Pre-made themes.
|
||||||
|
|
||||||
|
See https://yazi-rs.github.io/docs/flavors/overview/ for documentation.
|
||||||
|
'';
|
||||||
|
example = literalExpression ''
|
||||||
|
{
|
||||||
|
foo = ./foo;
|
||||||
|
bar = pkgs.bar;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
@ -160,6 +197,11 @@ in {
|
||||||
"yazi/theme.toml" = mkIf (cfg.theme != { }) {
|
"yazi/theme.toml" = mkIf (cfg.theme != { }) {
|
||||||
source = tomlFormat.generate "yazi-theme" cfg.theme;
|
source = tomlFormat.generate "yazi-theme" cfg.theme;
|
||||||
};
|
};
|
||||||
};
|
"yazi/init.lua" = mkIf (cfg.initLua != null) { source = cfg.initLua; };
|
||||||
|
} // (mapAttrs'
|
||||||
|
(name: value: nameValuePair "yazi/plugins/${name}" { source = value; })
|
||||||
|
cfg.plugins) // (mapAttrs'
|
||||||
|
(name: value: nameValuePair "yazi/flavors/${name}" { source = value; })
|
||||||
|
cfg.flavors);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
1
tests/modules/programs/yazi/flavor/init.lua
Normal file
1
tests/modules/programs/yazi/flavor/init.lua
Normal file
|
@ -0,0 +1 @@
|
||||||
|
-- This is a flavor.
|
3
tests/modules/programs/yazi/init.lua
Normal file
3
tests/modules/programs/yazi/init.lua
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
require("zoxide"):setup {
|
||||||
|
update_db = true,
|
||||||
|
}
|
1
tests/modules/programs/yazi/plugin/init.lua
Normal file
1
tests/modules/programs/yazi/plugin/init.lua
Normal file
|
@ -0,0 +1 @@
|
||||||
|
-- This is a plugin.
|
|
@ -69,6 +69,9 @@
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
initLua = ./init.lua;
|
||||||
|
plugins = { "test.yazi" = ./plugin; };
|
||||||
|
flavors = { "test.yazi" = ./flavor; };
|
||||||
};
|
};
|
||||||
|
|
||||||
test.stubs.yazi = { };
|
test.stubs.yazi = { };
|
||||||
|
@ -80,5 +83,11 @@
|
||||||
${./settings-expected.toml}
|
${./settings-expected.toml}
|
||||||
assertFileContent home-files/.config/yazi/theme.toml \
|
assertFileContent home-files/.config/yazi/theme.toml \
|
||||||
${./theme-expected.toml}
|
${./theme-expected.toml}
|
||||||
|
assertFileContent home-files/.config/yazi/init.lua \
|
||||||
|
${./init.lua}
|
||||||
|
assertFileContent home-files/.config/yazi/plugins/test.yazi/init.lua \
|
||||||
|
${./plugin/init.lua}
|
||||||
|
assertFileContent home-files/.config/yazi/flavors/test.yazi/init.lua \
|
||||||
|
${./flavor/init.lua}
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue