Files
nix-config/home/programs/nvim/default.nix

140 lines
3.0 KiB
Nix

# ref: https://github.com/vimjoyer/nvim-nix-video/blob/main/home.nix
{
pkgs,
lib,
...
}: {
programs.neovim = let
toLua = str: "lua << EOF\n${str}\nEOF\n";
toLuaFile = file: "lua << EOF\n${builtins.readFile file}\nEOF\n";
in {
enable = true;
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
extraLuaConfig = ''
${builtins.readFile ./init.lua}
'';
extraPackages = with pkgs; [
lua-language-server
# rnix-lsp
xclip
wl-clipboard
ripgrep
fd
lua-language-server
rust-analyzer-unwrapped
black
nodejs_22
latexrun
# gh
];
plugins = with pkgs.vimPlugins; [
vim-nix
vim-airline-themes
plenary-nvim
nvim-web-devicons
{
plugin = mini-animate;
config = toLuaFile ./plugins/mini-animate.lua;
}
{
plugin = telescope-nvim;
config = toLuaFile ./plugins/telescope.lua;
}
{
plugin = presenting-vim;
config = toLuaFile ./plugins/presenting.lua;
}
# coc-nvim
{
plugin = vimtex;
config = toLuaFile ./plugins/vimtex.lua;
}
{
plugin = goyo-vim;
config = toLuaFile ./plugins/goyo.lua;
}
{
plugin = tokyonight-nvim;
config = toLuaFile ./plugins/tokyonight.lua;
}
{
plugin = nerdcommenter;
config = toLuaFile ./plugins/nerdcommenter.lua;
}
{
plugin = nvim-tree-lua;
config = toLuaFile ./plugins/nvimtree.lua;
}
# {
# plugin = vim-airline;
# config = toLuaFile ./plugins/airline.lua;
# }
{
plugin = barbar-nvim;
config = toLuaFile ./plugins/barbar.lua;
}
{
# the most helpful thing is this guy: https://ejmastnak.com/tutorials/vim-latex/luasnip/
plugin = luasnip;
config = toLuaFile ./plugins/luasnip.lua;
}
{
plugin = lualine-nvim;
config = toLuaFile ./plugins/lualine.lua;
}
{
plugin = nvim-treesitter.withPlugins (p: [
# p.tree-sitter-nix
# p.tree-sitter-vim
# p.tree-sitter-bash
# p.tree-sitter-lua
# p.tree-sitter-python
# p.tree-sitter-json
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.yaml
p.agda
]);
config = toLuaFile ./plugins/treesitter.lua;
}
];
# extraConfig = lib.fileContents ./init.vim;
};
# copy the snippets :#
home.activation.copySnippetsDir = lib.mkAfter ''
mkdir -p ~/.config/nvim/snippets
cp -r ${./snippets}/* ~/.config/nvim/snippets/
chmod -R u+w ~/.config/nvim/snippets/
'';
}