Skip to content

Commit

Permalink
plugins/lazydev: init
Browse files Browse the repository at this point in the history
  • Loading branch information
HeitorAugustoLN committed Jan 7, 2025
1 parent a352bb8 commit 28dd237
Show file tree
Hide file tree
Showing 2 changed files with 218 additions and 0 deletions.
162 changes: 162 additions & 0 deletions plugins/by-name/lazydev/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
{ config, lib, ... }:
let
inherit (lib) types;
inherit (lib.nixvim)
defaultNullOpts
literalLua
mkNullOrOption'
nestedLiteralLua
;

libraryType = types.submodule {
freeformType = with types; attrsOf anything;
options = {
files = mkNullOrOption' {
type = with types; listOf str;
example = [ "xmake.lua" ];
description = "A list of files that triggers the library to be loaded when required.";
};
mods = mkNullOrOption' {
type = with types; listOf str;
example = [ "wezterm" ];
description = "A list of modules that triggers the library to be loaded when required.";
};
path = lib.mkOption {
type = types.str;
example = "~/projects/my-awesome-lib";
description = "The path to the library.";
};
words = mkNullOrOption' {
type = with types; listOf str;
example = [
"wezterm"
"LazyVim"
];
description = "A list of words that triggers the library to be loaded.";
};
};
};
in
lib.nixvim.plugins.mkNeovimPlugin {
name = "lazydev";
packPathName = "lazydev.nvim";
package = "lazydev-nvim";

maintainers = [ lib.maintainers.HeitorAugustoLN ];

description = ''
### lazydev.nvim as a blink.cmp source
```nix
{
plugins = {
lazydev.enable = true;
blink-cmp.settings = {
sources.providers = {
lazydev = {
name = "LazyDev";
module = "lazydev.integrations.blink";
# make lazydev completions top priority (see `:h blink.cmp`)
score_offset = 100;
};
};
};
};
}
```
'';

settingsOptions = {
enabled =
defaultNullOpts.mkBool
(literalLua ''
function(root_dir)
return vim.g.lazydev_enabled == nil and true or vim.g.lazydev_enabled
end
'')
''
Whether lazydev.nvim is enabled.
'';

integrations = {
cmp = defaultNullOpts.mkBool true ''
Whether lazydev.nvim should integrate with nvim-cmp.
Adds a completion source for:
- `require "modname"`
- `---@module "modname"`
'';

coq = defaultNullOpts.mkBool false ''
Whether lazydev.nvim should integrate with coq.nvim.
Adds a completion source for:
- `require "modname"`
- `---@module "modname"`
'';

lspconfig = defaultNullOpts.mkBool true ''
Whether lazydev.nvim should integrate with nvim-lspconfig.
Fixes lspconfig's workspace management for LuaLS
Only create a new workspace if the buffer is not part
of an existing workspace or one of its libraries.
'';
};

library = defaultNullOpts.mkNullableWithRaw (with types; listOf (either str libraryType)) [ ] ''
A list of libraries for lazydev.nvim.
'';

runtime = defaultNullOpts.mkStr (literalLua "vim.env.VIMRUNTIME") ''
The runtime path of the current Neovim instance.
'';
};

settingsExample = {
enabled = nestedLiteralLua ''
function(root_dir)
return vim.g.lazydev_enabled == nil and true or vim.g.lazydev_enabled
end
'';
library = [
"~/projects/my-awesome-lib"
"lazy.nvim"
"LazyVim"
{
path = "LazyVim";
words = [ "LazyVim" ];
}
];
runtime = nestedLiteralLua "vim.env.VIMRUNTIME";
};

extraConfig = cfg: {
warnings =
lib.optionals
(
builtins.isBool cfg.settings.integrations.cmp
&& (config.plugins.cmp.enable -> cfg.settings.integrations.cmp)
)
[ "Nixvim(plugins.lazydev): you have enabled nvim-cmp integration but plugins.cmp is not enabled." ]
++
lib.optionals
(
builtins.isBool cfg.settings.integrations.lspconfig
&& (config.plugins.lsp.enable -> cfg.settings.integrations.lspconfig)
)
[
"Nixvim(plugins.lazydev): you have enabled lspconfig integration but plugins.lsp is not enabled."
]
++
lib.optionals
(
builtins.isBool cfg.settings.integrations.coq
&& (config.plugins.coq-nvim.enable -> cfg.settings.integrations.coq)
)
[
"Nixvim(plugins.lazydev): you have enabled coq integration but plugins.coq-nvim is not enabled."
];
};
}
56 changes: 56 additions & 0 deletions tests/test-sources/plugins/by-name/lazydev/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{
empty = {
plugins.lazydev.enable = true;
};

defaults = {
plugins = {
cmp.enable = true;

lazydev = {
enable = true;

settings = {
enabled.__raw = ''
function(root_dir)
return vim.g.lazydev_enabled == nil and true or vim.g.lazydev_enabled
end
'';
integrations = {
lspconfig = true;
cmp = true;
coq = false;
};
library.__raw = "{}";
runtime.__raw = "vim.env.VIMRUNTIME";
};
};

lsp.enable = true;
};
};

example = {
plugins.lazydev = {
enable = true;

settings = {
enabled.__raw = ''
function(root_dir)
return vim.g.lazydev_enabled == nil and true or vim.g.lazydev_enabled
end
'';
library = [
"~/projects/my-awesome-lib"
"lazy.nvim"
"LazyVim"
{
path = "LazyVim";
words = [ "LazyVim" ];
}
];
runtime.__raw = "vim.env.VIMRUNTIME";
};
};
};
}

0 comments on commit 28dd237

Please sign in to comment.