nixos-configs/common/home/neovim/default.nix

87 lines
2 KiB
Nix
Raw Normal View History

2023-11-22 15:33:16 -05:00
{
config,
2024-05-23 21:22:11 -04:00
neovim-nightly,
2023-11-22 15:33:16 -05:00
pkgs,
...
2024-01-22 11:09:37 -05:00
}: let
inherit (pkgs) vimPlugins;
in {
imports = [
./git.nix
./langs
./theme.nix
./treesitter.nix
];
programs = {
neovim = {
enable = true;
2024-05-23 21:22:11 -04:00
package = neovim-nightly.packages.${pkgs.system}.neovim;
extraLuaConfig =
2024-06-09 22:49:30 -04:00
# lua
''
-- by default, the indent is 2 spaces.
vim.opt.smartindent = true;
vim.opt.expandtab = true;
vim.opt.shiftwidth = 2;
vim.opt.softtabstop = 2;
vim.opt.tabstop = 2;
vim.opt.number = true;
vim.opt.relativenumber = true;
vim.opt.undofile = true;
vim.opt.undodir = '${config.xdg.cacheHome}/nvim/';
2024-05-08 23:04:16 -04:00
-- Always show the signcolumn, otherwise it would shift
-- the text each time diagnostics appear/become resolved
vim.opt.signcolumn = 'yes';
-- remove highlight on words
2024-05-08 23:04:16 -04:00
vim.keymap.set('n', '<esc>', ':noh<cr><esc>', {
noremap = true,
silent = true,
});
'';
plugins = [
vimPlugins.fzfWrapper
vimPlugins.fzf-vim
{
plugin = vimPlugins.todo-comments-nvim;
type = "lua";
config =
2024-06-09 22:49:30 -04:00
# lua
''
require('todo-comments').setup();
'';
}
{
plugin = vimPlugins.mini-nvim;
type = "lua";
config =
2024-06-09 22:49:30 -04:00
# lua
''
-- TODO: see how this works
local ts_input = require('mini.surround').gen_spec.input.treesitter;
require('mini.surround').setup({
custom_surroundings = {
-- Use tree-sitter to search for function call
f = {
input = ts_input({
outer = '@call.outer',
inner = '@call.inner',
});
},
},
});
'';
}
];
};
2023-07-19 21:52:35 -04:00
};
}