feat(nix): reorganize plugins in neovim package for nix

This commit is contained in:
Guz
2025-12-12 13:53:53 -03:00
parent 5c81a42ab9
commit 68560f5b9a

View File

@@ -2,130 +2,140 @@
pkgs,
lib,
neovim ? pkgs.neovim,
blink-cmp ? pkgs.vimPlugins.blink-cmp,
ripgrep ? pkgs.ripgrep,
mdfmt ? null,
go-grip ? pkgs.go-grip,
yazi ? pkgs.yazi,
...
}: let
start =
(with pkgs.vimPlugins; [
catppuccin-nvim
indent-blankline-nvim
lze
nvim-lspconfig
nvim-treesitter.withAllGrammars
nvim-treesitter-textobjects
nvim-treesitter-textsubjects
(
(pkgs.vimUtils.buildVimPlugin {
name = "dot013.nvim";
src = ./.;
}).overrideAttrs
{doCheck = false;}
)
])
++ [
blink-cmp
];
opt = with pkgs.vimPlugins; [
auto-save-nvim
auto-session
cloak-nvim
conform-nvim
comment-nvim
friendly-snippets
gitsigns-nvim
harpoon2
lualine-nvim
luasnip
marks-nvim
nvim-autopairs
nvim-dap
nvim-dap-go
nvim-dap-ui
nvim-dap-virtual-text
nvim-nio
nvim-ts-autotag
nvim-web-devicons
tailwind-tools-nvim
telescope-nvim
telescope-zf-native-nvim
telescope-undo-nvim
todo-comments-nvim
trouble-nvim
tmux-nvim
vim-sleuth
(pkgs.vimUtils.buildVimPlugin {
pname = "aw-watcher.nvim";
version = "master";
src = fetchGit {
url = "https://github.com/lowitea/aw-watcher.nvim";
rev = "be7b03748f59b6602502baf08e7f7736cc7279a5";
};
})
(pkgs.vimUtils.buildVimPlugin {
pname = "nvim-emmet";
version = "v0.4.4";
src = fetchGit {
url = "https://github.com/olrtg/nvim-emmet";
rev = "cde4fb2968704aae5c18b7f8a9bc2508767bb78d";
};
})
# Probably can be replaced by local functions in the config
(pkgs.vimUtils.buildVimPlugin {
pname = "tfm.nvim";
version = "2024-04-23";
src = fetchGit {
url = "https://github.com/Rolv-Apneseth/tfm.nvim";
rev = "fb0de2c96bf303216ac5d91ce9bdb7f430030f8b";
};
})
];
languageServers = with pkgs; [
emmet-language-server
deno
gopls
golangci-lint-langserver
htmx-lsp
lemminx
lua-language-server
nil
marksman
tailwindcss-language-server
typescript-language-server
rust-analyzer
vscode-langservers-extracted
];
formatters = with pkgs; [
alejandra
jq
html-tidy
libxml2
mdfmt
prettierd
shellharden
shfmt
];
externalDependencies = [
ripgrep
go-grip
yazi
];
dot-nvim = pkgs.vimUtils.buildVimPlugin {
name = "dot.nvim";
src = lib.cleanSource ./.;
};
in
neovim.override {
viAlias = true;
vimAlias = true;
configure.packages.plugins = {inherit start opt;};
configure.packages.plugins = {
# Reference: ./lua/dot/plugins.lua
start = with pkgs.vimPlugins; [
lze
lzextras
# Language Server Protocol
nvim-lspconfig
# Autocomplete
blink-cmp
friendly-snippets # Snippets
# Treesitter (Syntax Highlighting)
nvim-treesitter.withAllGrammars
nvim-treesitter-textobjects # Dependency
nvim-treesitter-textsubjects # Dependency
(dot-nvim.overrideAttrs {doCheck = false;})
];
opt = with pkgs.vimPlugins; [
# Language Server Protocol
lazydev-nvim
# Debugger
nvim-dap
nvim-dap-ui
nvim-nio # Dependency
# Formatting
conform-nvim
guess-indent-nvim
# Fuzzy Finding
telescope-nvim
telescope-zf-native-nvim # Dependency
# Quick file switching
harpoon2
# Auto saving
auto-save-nvim
# Session restore
auto-session
# Secrets hiding
cloak-nvim
# Appearance
catppuccin-nvim
indent-blankline-nvim
# Git
gitsigns-nvim
# Todo Comments
todo-comments-nvim
# Integrations
(pkgs.vimUtils.buildVimPlugin {
pname = "aw-watcher.nvim";
version = "master";
src = fetchGit {
url = "https://github.com/lowitea/aw-watcher.nvim";
rev = "be7b03748f59b6602502baf08e7f7736cc7279a5";
};
})
(pkgs.vimUtils.buildVimPlugin {
pname = "godot.nvim";
version = "v0.4.4";
src = fetchGit {
url = "https://github.com/Lommix/godot.nvim";
rev = "349b6b088c15447843fc21b60ba7267b8b49d821";
};
})
];
# inherit start opt;
};
extraMakeWrapperArgs = let
binPath = lib.makeBinPath (languageServers ++ formatters ++ externalDependencies);
binPath = lib.makeBinPath (with pkgs;
[
# INFO: LSP Providers
# Reference: ./lua/dot/lsp.lua
vscode-langservers-extracted # cssls, eslint, html, jsonls, typescript
emmet-language-server
golangci-lint-langserver
gopls
htmx-lsp
lemminx
lua-language-server
marksman
nil
rust-analyzer
tailwindcss-language-server
]
++ [
# INFO: Formatters
# Reference: ./lua/dot/formatting.lua
# TODO: Remove some formatters from Neovim's path and let them be provided
# by flake.nix in projects
alejandra
gdtoolkit_4
html-tidy
jq
libxml2
mdfmt
prettierd
shellharden
shfmt
]
++ [
# INFO: External dependencies
go-grip # Reference: ./lua/dot/commands.lua#Grip markdown reader
yazi # Reference ./lua/dot/commands.lua#Yazi file manager
zf # Reference ./lua/dot/plugins.lua#telescope-zf-native.nvim
]);
in "--suffix PATH : ${binPath}";
}