115 lines
3 KiB
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
|
|
];
|
|
};
|
|
}
|