home-manager/neovim/default.nix

181 lines
4.2 KiB
Nix

{ pkgs, theme, vimwikiPath, ... }:
{
# symlink for a stable path
home.file.".vscode-extensions/vscode-lldb".source = pkgs.vscode-extensions.vadimcn.vscode-lldb;
programs = {
neovim = {
enable = true;
package = pkgs.neovim-unwrapped;
defaultEditor = true;
plugins = with pkgs.vimPlugins; [
# theme
nvim-solarized-lua
# auto-close brackets, etc
nvim-autopairs
# better wildmenu
wilder-nvim
# undo-tree
undotree
# quickfix
nvim-bqf
# ui
dressing-nvim
# session handling
project-nvim
auto-session
# escape handling
better-escape-nvim
nvim-treesitter.withAllGrammars
nvim-treesitter-textobjects
nvim-ts-context-commentstring
markdown-preview-nvim # use({ "iamcco/markdown-preview.nvim", run = ":call mkdp#util#install()" })
toggleterm-nvim
nvim-notify
comment-nvim
lualine-nvim
tabline-nvim
indent-blankline-nvim
plenary-nvim
vim-illuminate
vim-surround
neogen
# git
gitsigns-nvim
vim-fugitive
vim-flog
git-blame-nvim
nvim-web-devicons # used by diffview-nvim
# snippets
friendly-snippets
luasnip
# auto-completion
nvim-cmp
cmp-nvim-lsp
cmp-buffer
cmp-path
cmp-cmdline
cmp-nvim-lua
cmp_luasnip
cmp-calc
cmp-nvim-lsp-signature-help
# telescope
telescope-nvim
telescope-fzf-native-nvim
telescope-ui-select-nvim
# LSP
nvim-lspconfig
lsp-status-nvim
rustaceanvim
neodev-nvim
none-ls-nvim
lsp_lines-nvim
lsp-inlayhints-nvim
# debugging
nvim-dap
nvim-dap-ui
# vim-wiki
vimwiki
];
withNodeJs = true;
extraPackages = with pkgs; [
# language servers
lua-language-server
terraform-ls
tflint
bash-language-server
prettierd
nodePackages.yaml-language-server
nodePackages.eslint_d
nodePackages.typescript-language-server
nodePackages.typescript
nodePackages.dockerfile-language-server-nodejs
nodePackages.vscode-langservers-extracted
vscode-extensions.vue.volar
lldb
vscode-extensions.vadimcn.vscode-lldb
marksman
clang-tools
cmake-language-server
texlab
nixd
nixpkgs-fmt
bitbake-language-server
(python3.withPackages (ps: with ps; [
pep8
autopep8
python-lsp-server
]))
pyright
#clipboard
xclip
#vimwiki
vimwiki-markdown
];
extraLuaPackages = luaPackages: [
luaPackages.lua-utils-nvim
luaPackages.pathlib-nvim
];
extraLuaConfig = ''
${builtins.readFile ./keymaps.lua }
${builtins.readFile ./options.lua }
${builtins.readFile ./commands.lua }
${builtins.readFile ./treesitter.lua }
${builtins.readFile ./lspconfig.lua }
${builtins.readFile ./auto-session.lua }
${builtins.readFile ./toggleterm.lua }
${builtins.readFile ./notify.lua }
${builtins.readFile ./comment.lua }
${builtins.readFile ./lualine.lua }
${builtins.readFile ./tabline.lua }
${builtins.readFile ./indent-blankline.lua }
${builtins.readFile ./gitsigns.lua }
${builtins.readFile ./luasnip.lua }
${builtins.readFile ./nvim-cmp.lua }
${builtins.readFile ./telescope.lua }
do
local vim_theme = "${theme}";
${builtins.readFile ./themes.lua }
end
${builtins.readFile ./project-nvim.lua }
${builtins.readFile ./dap.lua }
${builtins.readFile ./illuminate.lua }
${builtins.readFile ./wilder.lua }
do
local vimwiki_path = "${vimwikiPath}"
${builtins.readFile ./vimwiki.lua }
end
vim.g.gitblame_date_format = "%r"
require("nvim-autopairs").setup({})
require("neogen").setup({ snippet_engine = "luasnip" })
'';
};
};
}