Files
cnix/home-manager/neovim/default.nix
2024-06-22 22:35:13 +02:00

132 lines
1.8 KiB
Nix

{ pkgs, ... }:
with pkgs;
let
tools = [
fswatch # File watcher utility, replacing libuv.fs_event for neovim 10.0
fzf
git
sqlite
tree-sitter
];
c = [
clang
clang-tools
cmake
gcc
gnumake
];
gamedev = [
# parser, linter and formatter for GDScript
gdtoolkit_3
gdtoolkit_4
];
golang = [
delve # debugger
go
gofumpt
goimports-reviser
golines
gopls
gotools
];
haskell = [
haskell-language-server
ghc
];
lua = [
lua-language-server
stylua
];
markup = [
cbfmt # format codeblocks
codespell
markdownlint-cli
mdformat
typst-lsp
];
nix = [
alejandra
nixd
nixfmt-rfc-style
nixpkgs-fmt
statix
];
python = [
black
isort
python311Packages.jedi-language-server
ruff
ruff-lsp
];
rust = [
rustToolchain
bacon # background code check
];
rustToolchain = pkgs.fenix.stable.withComponents [
"cargo"
"clippy"
"rust-src"
"rustc"
"rustfmt"
"rust-analyzer"
];
shell = [
nodePackages.bash-language-server
shellcheck
shfmt
];
web = [
deno
nodePackages.sql-formatter
nodePackages.typescript-language-server
nodejs
prettierd # multi-language formatters
vscode-langservers-extracted
yarn
];
extraPackages =
tools
++ c
++ gamedev
++ golang
++ haskell
++ lua
++ markup
++ nix
++ python
++ rust
++ shell
++ web;
in
{
# for quick development
home.packages = rust;
programs.neovim = {
enable = true;
defaultEditor = true;
package = pkgs.neovim-unwrapped;
plugins = with pkgs.vimPlugins; [ telescope-cheat-nvim ];
inherit extraPackages;
};
programs.helix = {
enable = true;
inherit extraPackages;
};
}