Skip to content

Commit

Permalink
helpers/neovim-plugin: add mkNeovimPlugin
Browse files Browse the repository at this point in the history
  • Loading branch information
GaetanLepage committed Feb 14, 2024
1 parent e797c36 commit 4494934
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 4 deletions.
11 changes: 8 additions & 3 deletions lib/helpers.nix
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
{lib, ...}: let
{
lib,
pkgs,
...
}: let
nixvimTypes = import ./types.nix {inherit lib nixvimOptions;};
nixvimUtils = import ./utils.nix {inherit lib;};
nixvimOptions = import ./options.nix {inherit lib nixvimTypes nixvimUtils;};
inherit (import ./to-lua.nix {inherit lib;}) toLuaObject;
in
{
maintainers = import ./maintainers.nix;
keymaps = import ./keymap-helpers.nix {inherit lib nixvimOptions nixvimTypes;};
autocmd = import ./autocmd-helpers.nix {inherit lib nixvimOptions nixvimTypes;};
neovim-plugin = import ./neovim-plugin.nix {inherit lib nixvimOptions;};
neovim-plugin = import ./neovim-plugin.nix {inherit lib nixvimOptions toLuaObject;};
vim-plugin = import ./vim-plugin.nix {inherit lib nixvimOptions;};
inherit (import ./to-lua.nix {inherit lib;}) toLuaObject;
inherit nixvimTypes;
inherit toLuaObject;
}
// nixvimUtils
// nixvimOptions
56 changes: 55 additions & 1 deletion lib/neovim-plugin.nix
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
{
lib,
nixvimOptions,
toLuaObject,
}:
with lib; {
with lib; rec {
mkSettingsOption = {
pluginName ? null,
options ? {},
Expand All @@ -27,4 +28,57 @@ with lib; {
'';
};
};

mkNeovimPlugin = config: {
name,
namespace ? "plugins",
maintainers,
imports ? [],
# options
originalName ? name,
defaultPackage,
settingsOptions ? {},
settingsExample ? null,
extraOptions ? {},
# config
luaName ? name,
extraConfig ? cfg: {},
extraPlugins ? [],
extraPackages ? [],
}: {
meta.maintainers = maintainers;

inherit imports;

options.${namespace}.${name} =
{
enable = mkEnableOption originalName;

package = nixvimOptions.mkPackageOption originalName defaultPackage;

settings = mkSettingsOption {
pluginName = name;
options = settingsOptions;
example = settingsExample;
};
}
// extraOptions;

config = let
cfg = config.${namespace}.${name};
in
mkIf cfg.enable (
mkMerge [
{
extraPlugins = [cfg.package] ++ extraPlugins;
inherit extraPackages;

extraConfigLua = ''
require('${luaName}').setup(${toLuaObject cfg.settings})
'';
}
(extraConfig cfg)
]
);
};
}

0 comments on commit 4494934

Please sign in to comment.