feat(nix): reorganize plugins in neovim package for nix
This commit is contained in:
242
package.nix
242
package.nix
@@ -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}";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user