Skip to content

Commit

Permalink
plugins: do not import helpers.nix directly
Browse files Browse the repository at this point in the history
  • Loading branch information
GaetanLepage committed Feb 11, 2024
1 parent 9f3bbca commit 7dbf7f9
Show file tree
Hide file tree
Showing 13 changed files with 83 additions and 119 deletions.
38 changes: 1 addition & 37 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,43 +29,7 @@ Most of nixvim is dedicated to wrapping neovim plugin such that we can configure
To add a new plugin you need to do the following.

1. Add a file in the correct sub-directory of [plugins](plugins). This depends on your exact plugin.
You will most certainly need the `helpers`, they can be added by doing something like:

```nix
{
lib,
pkgs,
...
} @ args:
let
helpers = import ../helpers.nix args;
in {
}
```
2. Create the minimal options for a new plugin (in `options.plugins.<plug-name>`:
- `enable = mkEnableOption ...` to toggle the plugin.
- `package = helpers.mkPackageOption ...` to change the package options.
3. Add the plugin package to the installed plugins if it is enabled. This can be done with the following:
```nix
{
config =
let
cfg = config.plugins."<plug-name>";
in lib.mkIf cfg.enable {
extraPlugins = [cfg.package];
extraConfigLua = ''
<plugin configuration if needed>
'';
};
}
```
2. Write the code for the corresponding nixvim module. You can start from the [template](plugins/TEMPLATE.nix).

You will then need to add Nix options for all (or most) of the upstream plugin options.
These options should be in `camelCase` (whereas most plugins define their options in `snake_case`), and their names should match exactly (except the case) to the upstream names.
Expand Down
119 changes: 59 additions & 60 deletions plugins/completion/nvim-cmp/cmp-helpers.nix
Original file line number Diff line number Diff line change
@@ -1,66 +1,65 @@
{
lib,
helpers,
config,
pkgs,
...
}: let
helpers = import ../../helpers.nix {inherit lib;};
in
with helpers.vim-plugin;
with lib; {
mkCmpSourcePlugin = {
name,
extraPlugins ? [],
useDefaultPackage ? true,
...
}:
mkVimPlugin config {
inherit name;
extraPlugins = extraPlugins ++ (lists.optional useDefaultPackage pkgs.vimPlugins.${name});
};

pluginAndSourceNames = {
"buffer" = "cmp-buffer";
"calc" = "cmp-calc";
"dap" = "cmp-dap";
"cmdline" = "cmp-cmdline";
"cmp-clippy" = "cmp-clippy";
"cmp-cmdline-history" = "cmp-cmdline-history";
"cmp_pandoc" = "cmp-pandoc-nvim";
"cmp_tabby" = "cmp-tabby";
"cmp_tabnine" = "cmp-tabnine";
"codeium" = "codeium-nvim";
"conventionalcommits" = "cmp-conventionalcommits";
"copilot" = "copilot-cmp";
"crates" = "crates-nvim";
"dictionary" = "cmp-dictionary";
"digraphs" = "cmp-digraphs";
"emoji" = "cmp-emoji";
"fish" = "cmp-fish";
"fuzzy_buffer" = "cmp-fuzzy-buffer";
"fuzzy_path" = "cmp-fuzzy-path";
"git" = "cmp-git";
"greek" = "cmp-greek";
"latex_symbols" = "cmp-latex-symbols";
"look" = "cmp-look";
"luasnip" = "cmp_luasnip";
"nvim_lsp" = "cmp-nvim-lsp";
"nvim_lsp_document_symbol" = "cmp-nvim-lsp-document-symbol";
"nvim_lsp_signature_help" = "cmp-nvim-lsp-signature-help";
"nvim_lua" = "cmp-nvim-lua";
"npm" = "cmp-npm";
"omni" = "cmp-omni";
"pandoc_references" = "cmp-pandoc-references";
"path" = "cmp-path";
"rg" = "cmp-rg";
"snippy" = "cmp-snippy";
"spell" = "cmp-spell";
"tmux" = "cmp-tmux";
"treesitter" = "cmp-treesitter";
"ultisnips" = "cmp-nvim-ultisnips";
"vim_lsp" = "cmp-vim-lsp";
"vimwiki-tags" = "cmp-vimwiki-tags";
"vsnip" = "cmp-vsnip";
"zsh" = "cmp-zsh";
}:
with helpers.vim-plugin;
with lib; {
mkCmpSourcePlugin = {
name,
extraPlugins ? [],
useDefaultPackage ? true,
...
}:
mkVimPlugin config {
inherit name;
extraPlugins = extraPlugins ++ (lists.optional useDefaultPackage pkgs.vimPlugins.${name});
};
}

pluginAndSourceNames = {
"buffer" = "cmp-buffer";
"calc" = "cmp-calc";
"dap" = "cmp-dap";
"cmdline" = "cmp-cmdline";
"cmp-clippy" = "cmp-clippy";
"cmp-cmdline-history" = "cmp-cmdline-history";
"cmp_pandoc" = "cmp-pandoc-nvim";
"cmp_tabby" = "cmp-tabby";
"cmp_tabnine" = "cmp-tabnine";
"codeium" = "codeium-nvim";
"conventionalcommits" = "cmp-conventionalcommits";
"copilot" = "copilot-cmp";
"crates" = "crates-nvim";
"dictionary" = "cmp-dictionary";
"digraphs" = "cmp-digraphs";
"emoji" = "cmp-emoji";
"fish" = "cmp-fish";
"fuzzy_buffer" = "cmp-fuzzy-buffer";
"fuzzy_path" = "cmp-fuzzy-path";
"git" = "cmp-git";
"greek" = "cmp-greek";
"latex_symbols" = "cmp-latex-symbols";
"look" = "cmp-look";
"luasnip" = "cmp_luasnip";
"nvim_lsp" = "cmp-nvim-lsp";
"nvim_lsp_document_symbol" = "cmp-nvim-lsp-document-symbol";
"nvim_lsp_signature_help" = "cmp-nvim-lsp-signature-help";
"nvim_lua" = "cmp-nvim-lua";
"npm" = "cmp-npm";
"omni" = "cmp-omni";
"pandoc_references" = "cmp-pandoc-references";
"path" = "cmp-path";
"rg" = "cmp-rg";
"snippy" = "cmp-snippy";
"spell" = "cmp-spell";
"tmux" = "cmp-tmux";
"treesitter" = "cmp-treesitter";
"ultisnips" = "cmp-nvim-ultisnips";
"vim_lsp" = "cmp-vim-lsp";
"vimwiki-tags" = "cmp-vimwiki-tags";
"vsnip" = "cmp-vsnip";
"zsh" = "cmp-zsh";
};
}
3 changes: 2 additions & 1 deletion plugins/completion/nvim-cmp/sources/default.nix
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
{
lib,
config,
helpers,
pkgs,
...
}:
with lib; let
cmpLib = import ../cmp-helpers.nix {inherit lib config pkgs;};
cmpLib = import ../cmp-helpers.nix {inherit lib config helpers pkgs;};
cmpSourcesPluginNames = attrValues cmpLib.pluginAndSourceNames;
pluginModules = lists.map (name: cmpLib.mkCmpSourcePlugin {inherit name;}) cmpSourcesPluginNames;
in {
Expand Down
2 changes: 1 addition & 1 deletion plugins/dap/dap-go.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
}:
with lib; let
cfg = config.plugins.dap.extensions.dap-go;
dapHelpers = import ./dapHelpers.nix {inherit lib;};
dapHelpers = import ./dapHelpers.nix {inherit lib helpers;};
in {
options.plugins.dap.extensions.dap-go = {
enable = mkEnableOption "dap-go";
Expand Down
2 changes: 1 addition & 1 deletion plugins/dap/dap-python.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
}:
with lib; let
cfg = config.plugins.dap.extensions.dap-python;
dapHelpers = import ./dapHelpers.nix {inherit lib;};
dapHelpers = import ./dapHelpers.nix {inherit lib helpers;};
in {
options.plugins.dap.extensions.dap-python = {
enable = mkEnableOption "dap-python";
Expand Down
9 changes: 5 additions & 4 deletions plugins/dap/dapHelpers.nix
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{lib, ...}:
with lib; let
helpers = import ../helpers.nix {inherit lib;};
in rec {
{
lib,
helpers,
}:
with lib; rec {
mkAdapterType = attrs:
types.submodule {
options =
Expand Down
2 changes: 1 addition & 1 deletion plugins/dap/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
}:
with lib; let
cfg = config.plugins.dap;
dapHelpers = import ./dapHelpers.nix {inherit lib;};
dapHelpers = import ./dapHelpers.nix {inherit lib helpers;};
in
with dapHelpers; {
imports = [
Expand Down
5 changes: 2 additions & 3 deletions plugins/languages/treesitter/ts-autotag.nix
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
{
pkgs,
lib,
helpers,
config,
...
}:
with lib; let
helpers = import ../../helpers.nix {inherit lib;};
in {
with lib; {
options.plugins.ts-autotag =
helpers.neovim-plugin.extraOptionsOptions
// {
Expand Down
3 changes: 1 addition & 2 deletions plugins/lsp/helpers.nix
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,12 @@
{
pkgs,
config,
helpers,
lib,
options,
...
}:
with lib; let
cfg = config.plugins.lsp.servers.${name};
helpers = import ../helpers.nix {inherit lib;};

packageOption =
if package != null
Expand Down
2 changes: 1 addition & 1 deletion plugins/lsp/language-servers/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ with lib; let
name = "ltex";
description = "ltex-ls for LanguageTool";
package = pkgs.ltex-ls;
settingsOptions = import ./ltex-settings.nix {inherit lib;};
settingsOptions = import ./ltex-settings.nix {inherit lib helpers;};
settings = cfg: {ltex = cfg;};
}
{
Expand Down
9 changes: 5 additions & 4 deletions plugins/lsp/language-servers/ltex-settings.nix
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
{lib}:
with lib; let
helpers = import ../../helpers.nix {inherit lib;};
in {
{
lib,
helpers,
}:
with lib; {
enabled =
helpers.defaultNullOpts.mkNullable
(with types; either bool (listOf str))
Expand Down
4 changes: 2 additions & 2 deletions plugins/none-ls/helpers.nix
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
pkgs,
config,
lib,
helpers,
...
} @ args:
}:
with lib; let
helpers = import ../helpers.nix args;
cfg = config.plugins.none-ls.sources.${sourceType}.${name};
# does this evaluate package?
packageOption =
Expand Down
4 changes: 2 additions & 2 deletions plugins/none-ls/servers.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
...
}:
with lib; let
helpers = import ./helpers.nix;
cmpHelpers = import ./helpers.nix;
serverData = {
code_actions = {
eslint = {
Expand Down Expand Up @@ -228,7 +228,7 @@ with lib; let
dataFlattened = flatten serverDataFormatted;
in {
imports =
(map helpers.mkServer dataFlattened)
(map cmpHelpers.mkServer dataFlattened)
++ [
./prettier.nix
# Introduced January 22 2024.
Expand Down

0 comments on commit 7dbf7f9

Please sign in to comment.