2023-11-22 15:33:16 -05:00
|
|
|
{
|
2023-12-08 12:50:38 -05:00
|
|
|
config,
|
2023-11-22 15:33:16 -05:00
|
|
|
pkgs,
|
|
|
|
...
|
2024-08-31 19:16:06 -04:00
|
|
|
}: {
|
2024-05-06 18:14:52 -04:00
|
|
|
imports = [
|
2024-05-08 20:26:57 -04:00
|
|
|
./git.nix
|
2024-05-07 22:49:00 -04:00
|
|
|
./langs
|
|
|
|
./theme.nix
|
2024-05-06 18:14:52 -04:00
|
|
|
./treesitter.nix
|
|
|
|
];
|
|
|
|
|
2023-10-15 15:11:59 -04:00
|
|
|
programs = {
|
|
|
|
neovim = {
|
|
|
|
enable = true;
|
2023-10-20 21:06:44 -04:00
|
|
|
|
2024-05-07 22:49:00 -04:00
|
|
|
extraLuaConfig =
|
2024-06-09 22:49:30 -04:00
|
|
|
# lua
|
2024-05-07 22:49:00 -04:00
|
|
|
''
|
|
|
|
-- 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;
|
2023-10-26 16:33:40 -04:00
|
|
|
|
2024-05-07 22:49:00 -04:00
|
|
|
vim.opt.number = true;
|
|
|
|
vim.opt.relativenumber = true;
|
2023-10-20 21:06:44 -04:00
|
|
|
|
2024-05-07 22:49:00 -04:00
|
|
|
vim.opt.undofile = true;
|
|
|
|
vim.opt.undodir = '${config.xdg.cacheHome}/nvim/';
|
2023-10-20 21:06:44 -04:00
|
|
|
|
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';
|
|
|
|
|
2024-05-07 22:49:00 -04:00
|
|
|
-- remove highlight on words
|
2024-05-08 23:04:16 -04:00
|
|
|
vim.keymap.set('n', '<esc>', ':noh<cr><esc>', {
|
|
|
|
noremap = true,
|
|
|
|
silent = true,
|
|
|
|
});
|
2024-07-24 13:26:02 -04:00
|
|
|
|
|
|
|
-- Get rid of deprecated messages
|
|
|
|
vim.tbl_add_reverse_lookup = function(tbl)
|
|
|
|
for k, v in pairs(tbl) do
|
|
|
|
tbl[v] = k;
|
|
|
|
end
|
|
|
|
end;
|
|
|
|
vim.tbl_islist = function(tbl)
|
|
|
|
return vim.islist(tbl);
|
|
|
|
end;
|
|
|
|
vim.diagnostic.is_disabled = function()
|
|
|
|
return not vim.diagnostic.is_enabled();
|
|
|
|
end;
|
|
|
|
vim.lsp.buf_get_clients = function()
|
|
|
|
return vim.lsp.get_clients();
|
|
|
|
end;
|
|
|
|
vim.lsp.get_active_clients = function()
|
|
|
|
return vim.lsp.get_clients();
|
|
|
|
end;
|
2024-05-07 22:49:00 -04:00
|
|
|
'';
|
2023-10-15 15:11:59 -04:00
|
|
|
|
2024-05-08 20:26:57 -04:00
|
|
|
plugins = [
|
2024-08-31 19:16:06 -04:00
|
|
|
pkgs.vimPlugins.fzfWrapper
|
|
|
|
pkgs.vimPlugins.fzf-vim
|
2024-05-08 20:26:57 -04:00
|
|
|
|
|
|
|
{
|
2024-08-31 19:16:06 -04:00
|
|
|
plugin = pkgs.vimPlugins.todo-comments-nvim;
|
2024-05-08 20:26:57 -04:00
|
|
|
type = "lua";
|
|
|
|
config =
|
2024-06-09 22:49:30 -04:00
|
|
|
# lua
|
2024-05-08 20:26:57 -04:00
|
|
|
''
|
|
|
|
require('todo-comments').setup();
|
|
|
|
'';
|
|
|
|
}
|
|
|
|
{
|
2024-08-31 19:16:06 -04:00
|
|
|
plugin = pkgs.vimPlugins.mini-nvim;
|
2024-05-08 20:26:57 -04:00
|
|
|
type = "lua";
|
|
|
|
config =
|
2024-06-09 22:49:30 -04:00
|
|
|
# lua
|
2024-05-08 20:26:57 -04:00
|
|
|
''
|
|
|
|
-- 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',
|
|
|
|
});
|
|
|
|
},
|
|
|
|
},
|
|
|
|
});
|
|
|
|
'';
|
|
|
|
}
|
2024-09-28 21:47:20 -04:00
|
|
|
|
|
|
|
{
|
|
|
|
plugin = pkgs.vimPlugins.nvim-config-local;
|
|
|
|
type = "lua";
|
|
|
|
config =
|
|
|
|
# lua
|
|
|
|
''
|
|
|
|
require('config-local').setup({
|
|
|
|
config_files = { '.nvim.lua', '.nvimrc', '.exrc' },
|
|
|
|
|
|
|
|
-- Where the plugin keeps files data
|
|
|
|
hashfile = '${config.xdg.cacheHome}/nvim/config-local',
|
|
|
|
});
|
|
|
|
'';
|
|
|
|
}
|
2024-05-08 20:26:57 -04:00
|
|
|
];
|
2023-10-15 15:11:59 -04:00
|
|
|
};
|
2023-07-19 21:52:35 -04:00
|
|
|
};
|
|
|
|
}
|