nix-conf/home/user/programs/nvim/default.nix
2024-12-13 22:30:05 +08:00

75 lines
1.3 KiB
Nix

{ pkgs, ... }:
let
treesitterWithGrammars = (pkgs.vimPlugins.nvim-treesitter.withPlugins (p: [
p.bash
p.comment
p.css
p.dockerfile
p.fish
p.gitattributes
p.gitignore
p.go
p.gomod
p.gowork
p.hcl
p.javascript
p.jq
p.json5
p.json
p.lua
p.make
p.markdown
p.nix
p.python
p.rust
p.toml
p.typescript
p.vue
p.yaml
]));
treesitter-parsers = pkgs.symlinkJoin {
name = "treesitter-parsers";
paths = treesitterWithGrammars.dependencies;
};
in
{
home.packages = with pkgs; [
ripgrep
fd
lua-language-server
rust-analyzer-unwrapped
black
gh
];
programs.neovim = {
enable = true;
package = pkgs.neovim;
vimAlias = true;
coc.enable = false;
withNodeJs = true;
plugins = [
treesitterWithGrammars
];
};
home.file."./.config/nvim/" = {
source = ../../../config/nvim;
recursive = true;
};
home.file."./.config/nvim/init.lua".text = ''
require("config.lazy")
vim.opt.runtimepath:append("${treesitter-parsers}")
'';
# Treesitter is configured as a locally developed module in lazy.nvim
# we hardcode a symlink here so that we can refer to it in our lazy config
home.file."./.local/share/nvim/nix/nvim-treesitter/" = {
recursive = true;
source = treesitterWithGrammars;
};
}