nix/home/programs/neovim/default.nix

68 lines
1.7 KiB
Nix

{pkgs, ...}: {
programs.neovim = {
enable = true;
defaultEditor = true;
extraLuaConfig = ''
${builtins.readFile ./config.lua}
'';
extraPackages = with pkgs; [
nodePackages_latest.typescript-language-server
vscode-langservers-extracted
gopls
nil
rust-analyzer
];
plugins = with pkgs.vimPlugins; [
{
plugin = nvim-surround;
type = "lua";
config = ''
require("nvim-surround").setup()
'';
}
{
plugin = comment-nvim;
type = "lua";
config = ''
require("Comment").setup()
'';
}
{
plugin = vimwiki;
config = ''
let g:vimwiki_list = [{'path': '~/Documents/vimwiki/', 'syntax': 'markdown', 'ext': '.md'}]
'';
}
{
plugin = telescope-nvim;
type = "lua";
config = ''
local builtin = require('telescope.builtin')
vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
'';
}
{
plugin = nvim-lspconfig;
type = "lua";
config = builtins.readFile ./lspconfig.lua;
}
];
};
programs.vscode = {
extensions = [pkgs.vscode-extensions.asvetliakov.vscode-neovim];
userSettings = {
"vscode-neovim.neovimExecutablePaths.linux" = "${pkgs.neovim}/bin/nvim";
"extensions.experimental.affinity" = {
"asvetliakov.vscode-neovim" = 1;
};
};
};
home.shellAliases = {
v = "nvim";
};
}