flakes/modules/user/neovim.nix

81 lines
2 KiB
Nix

{ config, lib, pkgs, ... }:
let
nvim-cmp = pkgs.vimUtils.buildVimPluginFrom2Nix {
pname = "nvim-cmp";
version = "2021-10-09";
src = pkgs.fetchFromGitHub {
owner = "hrsh7th";
repo = "nvim-cmp";
rev = "339fe9177b8eff85b21a0e118db400ab89775c28";
sha256 = "16k9zqqhsw4z4zx1x1y34yss2k2jzq04f4mlp5xc2rwnfxi8yd93";
};
meta.homepage = "https://github.com/hrsh7th/nvim-cmp/";
};
luaconf = pkgs.writeText "config.lua"
(lib.replaceStrings ["{{OMNISHARP_PATH}}"] ["${pkgs.omnisharp-roslyn}/bin/omnisharp"]
(builtins.readFile ../../res/config.lua));
in {
systemd.user.tmpfiles.rules = [
"D %t/vim/swap 0755 - - - -"
"D %t/vim/undo 0755 - - - -"
];
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
package = pkgs.neovim-nightly;
withNodeJs = true;
extraPackages = with pkgs; [
rust-analyzer
nodePackages.diagnostic-languageserver
nodePackages.eslint_d
nodePackages.typescript-language-server
nodePackages.vscode-langservers-extracted
nodePackages.yaml-language-server
];
plugins = with pkgs.vimPlugins; [
ctrlp-vim
lualine-nvim
nerdtree
tokyonight-nvim
vim-fugitive
vim-nix
vim-repeat
vim-signify
vim-surround
nvim-cmp
nvim-lspconfig
cmp-nvim-lsp
cmp_luasnip
luasnip
(nvim-treesitter.withPlugins (p: with p; [
tree-sitter-comment
tree-sitter-c-sharp
pkgs.tree-sitter-glimmer
tree-sitter-html
tree-sitter-javascript
tree-sitter-jsdoc
tree-sitter-json
pkgs.tree-sitter-jsonc
tree-sitter-lua
tree-sitter-nix
tree-sitter-php
tree-sitter-regex
tree-sitter-rust
tree-sitter-toml
tree-sitter-typescript
tree-sitter-tsx
tree-sitter-yaml
]))
];
extraConfig = ''
luafile ${luaconf}
'';
};
}