Files
nvim/package.nix

149 lines
3.4 KiB
Nix

{
pkgs,
lib,
neovim ? pkgs.neovim,
mdfmt ? null,
yazi ? pkgs.yazi,
godotdev ? (pkgs.vimUtils.buildVimPlugin {
pname = "godotdev.nvim";
version = "v0.2.3";
src = fetchGit {
url = "https://github.com/Mathijs-Bakker/godotdev.nvim";
rev = "79d9315988b7772c03a1cabb6f31f5287c849e2b";
};
}),
...
}: let
dot-nvim = pkgs.vimUtils.buildVimPlugin {
name = "dot.nvim";
src = lib.cleanSource ./.;
};
in
neovim.override {
viAlias = true;
vimAlias = true;
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
# Auto Complete
nvim-autopairs
# 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";
};
})
godotdev
];
# inherit start opt;
};
extraMakeWrapperArgs = let
binPath = lib.makeBinPath (with pkgs;
[
# INFO: LSP Providers
# Reference: ./lua/dot/lsp.lua
vscode-langservers-extracted # cssls, eslint, html, jsonls, typescript
docker-language-server
emmet-language-server
golangci-lint-langserver
gopls
htmx-lsp
lemminx
lua-language-server
marksman
nil
rust-analyzer
tailwindcss-language-server
typescript-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
ripgrep # Reference ./lua/dot/plugins.lua#telescope.nvim
yazi # Reference ./lua/dot/commands.lua#Yazi file manager
zf # Reference ./lua/dot/plugins.lua#telescope-zf-native.nvim
]);
in "--suffix PATH : ${binPath}";
}