nix/hosts/nxs/modules/home-manager/neovim.nix

115 lines
3 KiB
Nix

{ pkgs, ... }:
{
imports = [
./nvim/core.nix
./nvim/lsp.nix
./nvim/lang/python.nix
./nvim/lang/haskell.nix
./nvim/lang/nix.nix
./nvim/lang/c.nix
./nvim/lang/rust.nix
];
programs.nixvim = {
enable = true;
viAlias = true;
vimAlias = true;
opts = {
number = true;
relativenumber = true;
ignorecase = true;
smartcase = true;
hlsearch = true;
incsearch = true;
termguicolors = true;
scrolloff = 8;
sidescrolloff = 8;
mouse = "a";
breakindent = true;
undofile = true;
undodir = "/home/narrator/.config/nvim/undodir";
swapfile = false;
backup = false;
writebackup = false;
updatetime = 300;
signcolumn = "yes";
clipboard = "unnamedplus";
splitright = true;
splitbelow = true;
inccommand = "split";
lazyredraw = true;
showmode = false;
};
globals = {
mapleader = " ";
};
extraConfigLua = ''
require("lualine").setup()
require("nvim-tree").setup({
view = {
width = 30,
},
})
vim.cmd("colorscheme tokyonight")
local cmp = require('cmp')
cmp.setup({
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'path' },
})
})
require('gitsigns').setup()
require('toggleterm').setup()
require('which-key').setup()
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, {})
vim.keymap.set('n', '<leader>e', ':NvimTreeToggle<CR>', {})
function _G.set_terminal_keymaps()
local opts = {noremap = true}
vim.api.nvim_buf_set_keymap(0, 't', '<esc>', [[<C-\><C-n>]], opts)
vim.api.nvim_buf_set_keymap(0, 't', 'jk', [[<C-\><C-n>]], opts)
vim.api.nvim_buf_set_keymap(0, 't', '<C-h>', [[<C-\><C-n><C-W>h]], opts)
vim.api.nvim_buf_set_keymap(0, 't', '<C-j>', [[<C-\><C-n><C-W>j]], opts)
vim.api.nvim_buf_set_keymap(0, 't', '<C-k>', [[<C-\><C-n><C-W>k]], opts)
vim.api.nvim_buf_set_keymap(0, 't', '<C-l>', [[<C-\><C-n><C-W>l]], opts)
end
vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()')
function _G.toggle_terminal()
local term = require("toggleterm.terminal")
term.toggle(1, 100, nil, 'float')
end
vim.keymap.set('n', '<leader>t', '<cmd>lua toggle_terminal()<CR>', {noremap = true, silent = true})
'';
extraPlugins = with pkgs.vimPlugins; [
lualine-nvim
tokyonight-nvim
nvim-tree-lua
nvim-lspconfig
nvim-cmp
cmp-nvim-lsp
cmp-path
telescope-nvim
telescope-fzf-native-nvim
plenary-nvim
gitsigns-nvim
toggleterm-nvim
which-key-nvim
jupytext-nvim
];
};
}