diff --git a/modules/plugins/utility/default.nix b/modules/plugins/utility/default.nix index 4abb4515..47579070 100644 --- a/modules/plugins/utility/default.nix +++ b/modules/plugins/utility/default.nix @@ -7,6 +7,7 @@ ./gestures ./icon-picker ./images + ./leetcode-nvim ./motion ./multicursors ./new-file-template @@ -16,6 +17,6 @@ ./telescope ./wakatime ./yanky-nvim - ./leetcode-nvim + ./yazi-nvim ]; } diff --git a/modules/plugins/utility/yazi-nvim/config.nix b/modules/plugins/utility/yazi-nvim/config.nix new file mode 100644 index 00000000..a781e5f0 --- /dev/null +++ b/modules/plugins/utility/yazi-nvim/config.nix @@ -0,0 +1,32 @@ +{ + options, + config, + pkgs, + lib, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.nvim.binds) mkKeymap; + + cfg = config.vim.utility.yazi-nvim; + keys = cfg.mappings; + + inherit (options.vim.utility.yazi-nvim) mappings; +in { + config = mkIf cfg.enable { + vim = { + lazy.plugins."yazi.nvim" = { + package = pkgs.vimPlugins.yazi-nvim; + setupModule = "yazi"; + inherit (cfg) setupOpts; + event = ["BufAdd" "VimEnter"]; + + keys = [ + (mkKeymap "n" keys.openYazi "Yazi" {desc = mappings.openYazi.description;}) + (mkKeymap "n" keys.openYaziDir "Yazi cwd" {desc = mappings.openYaziDir.description;}) + (mkKeymap "n" keys.yaziToggle "Yazi toggle" {desc = mappings.yaziToggle.description;}) + ]; + }; + }; + }; +} diff --git a/modules/plugins/utility/yazi-nvim/default.nix b/modules/plugins/utility/yazi-nvim/default.nix new file mode 100644 index 00000000..6da79794 --- /dev/null +++ b/modules/plugins/utility/yazi-nvim/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./config.nix + ./yazi-nvim.nix + ]; +} diff --git a/modules/plugins/utility/yazi-nvim/yazi-nvim.nix b/modules/plugins/utility/yazi-nvim/yazi-nvim.nix new file mode 100644 index 00000000..9a83a1a8 --- /dev/null +++ b/modules/plugins/utility/yazi-nvim/yazi-nvim.nix @@ -0,0 +1,26 @@ +{lib, ...}: let + inherit (lib.options) mkEnableOption mkOption; + inherit (lib.types) bool; + inherit (lib.nvim.types) mkPluginSetupOption; + inherit (lib.nvim.binds) mkMappingOption; +in { + options.vim.utility.yazi-nvim = { + enable = mkEnableOption '' + companion plugin for the yazi terminal file manager [yazi-nvim] + ''; + + mappings = { + openYazi = mkMappingOption "Open yazi at the current file [yazi.nvim]" "-"; + openYaziDir = mkMappingOption "Open the file manager in nvim's working directory [yazi.nvim]" "cw"; + yaziToggle = mkMappingOption "Resume the last yazi session [yazi.nvim]" ""; + }; + + setupOpts = mkPluginSetupOption "yazi-nvim" { + open_for_directories = mkOption { + type = bool; + default = false; + description = "Whether to open Yazi instead of netrw"; + }; + }; + }; +}