nvim conf
This commit is contained in:
parent
553fb15efa
commit
d51a0936ab
|
|
@ -19,7 +19,7 @@
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
neovim
|
(neovim.override { withRuby = false; })
|
||||||
wget
|
wget
|
||||||
tree
|
tree
|
||||||
tmux
|
tmux
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ in {
|
||||||
imports = [
|
imports = [
|
||||||
./kde
|
./kde
|
||||||
./tmux
|
./tmux
|
||||||
|
./nvim
|
||||||
];
|
];
|
||||||
|
|
||||||
fonts.fontconfig.enable = false;
|
fonts.fontconfig.enable = false;
|
||||||
|
|
|
||||||
32
user/config/nvim/default.nix
Normal file
32
user/config/nvim/default.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.neovim = {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs.vimPlugins; [
|
||||||
|
vim-tmux-navigator
|
||||||
|
which-key-nvim
|
||||||
|
telescope-nvim
|
||||||
|
nvim-treesitter.withAllGrammars
|
||||||
|
nvim-lspconfig
|
||||||
|
fidget-nvim
|
||||||
|
nvim-cmp
|
||||||
|
luasnip
|
||||||
|
cmp_luasnip
|
||||||
|
cmp-nvim-lsp
|
||||||
|
mini-nvim
|
||||||
|
vim-sleuth
|
||||||
|
catppuccin-nvim
|
||||||
|
tokyonight-nvim
|
||||||
|
];
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
basedpyright
|
||||||
|
clang-tools
|
||||||
|
];
|
||||||
|
withRuby = false;
|
||||||
|
};
|
||||||
|
xdg.configFile."nvim/init.lua".text = "require('init')";
|
||||||
|
xdg.configFile."nvim/lua".source = config.u.lib.lnn "user/config/nvim/lua";
|
||||||
|
}
|
||||||
4
user/config/nvim/lua/init.lua
Normal file
4
user/config/nvim/lua/init.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
require('u.bindings')
|
||||||
|
require('u.options')
|
||||||
|
require('u.lsp')
|
||||||
|
require('u.cmp')
|
||||||
4
user/config/nvim/lua/u/bindings.lua
Normal file
4
user/config/nvim/lua/u/bindings.lua
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
|
||||||
|
|
||||||
|
require('mini.move').setup()
|
||||||
|
require('mini.ai').setup()
|
||||||
39
user/config/nvim/lua/u/cmp.lua
Normal file
39
user/config/nvim/lua/u/cmp.lua
Normal file
|
|
@ -0,0 +1,39 @@
|
||||||
|
local cmp = require('cmp')
|
||||||
|
local luasnip = require('luasnip')
|
||||||
|
luasnip.config.setup()
|
||||||
|
|
||||||
|
cmp.setup({
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
luasnip.lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
mapping = cmp.mapping.preset.insert {
|
||||||
|
['<C-n>'] = cmp.mapping.select_next_item(),
|
||||||
|
['<C-p>'] = cmp.mapping.select_prev_item(),
|
||||||
|
|
||||||
|
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||||
|
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||||
|
|
||||||
|
['<C-y>'] = cmp.mapping.confirm { select = true },
|
||||||
|
|
||||||
|
['<C-Space>'] = cmp.mapping.complete {},
|
||||||
|
|
||||||
|
['<C-l>'] = cmp.mapping(function()
|
||||||
|
if luasnip.expand_or_locally_jumpable() then
|
||||||
|
luasnip.expand_or_jump()
|
||||||
|
end
|
||||||
|
end, { 'i', 's' }),
|
||||||
|
['<C-h>'] = cmp.mapping(function()
|
||||||
|
if luasnip.locally_jumpable(-1) then
|
||||||
|
luasnip.jump(-1)
|
||||||
|
end
|
||||||
|
end, { 'i', 's' }),
|
||||||
|
},
|
||||||
|
completion = { completeopt = 'menu,menuone,noinsert' },
|
||||||
|
sources = {
|
||||||
|
{ name = 'nvim_lsp' },
|
||||||
|
{ name = 'luasnip' },
|
||||||
|
{ name = 'path' },
|
||||||
|
},
|
||||||
|
})
|
||||||
16
user/config/nvim/lua/u/lsp.lua
Normal file
16
user/config/nvim/lua/u/lsp.lua
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
local lspconfig = require('lspconfig')
|
||||||
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_capabilities())
|
||||||
|
|
||||||
|
lspconfig.clangd.setup({
|
||||||
|
cmd = {
|
||||||
|
"clangd",
|
||||||
|
"--background-index",
|
||||||
|
"--clang-tidy",
|
||||||
|
"--completion-style=bundled",
|
||||||
|
"--cross-file-rename",
|
||||||
|
"--header-insertion=iwyu",
|
||||||
|
},
|
||||||
|
capabilities=capabilities
|
||||||
|
})
|
||||||
|
lspconfig.basedpyright.setup{}
|
||||||
59
user/config/nvim/lua/u/options.lua
Normal file
59
user/config/nvim/lua/u/options.lua
Normal file
|
|
@ -0,0 +1,59 @@
|
||||||
|
vim.g.mapleader = ' '
|
||||||
|
vim.g.maplocalleader = ' '
|
||||||
|
|
||||||
|
vim.g.have_nerd_font = true
|
||||||
|
|
||||||
|
vim.opt.number = true
|
||||||
|
|
||||||
|
vim.opt.mouse = 'a'
|
||||||
|
|
||||||
|
vim.opt.showmode = false
|
||||||
|
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.opt.clipboard = 'unnamedplus'
|
||||||
|
end)
|
||||||
|
|
||||||
|
vim.opt.shiftwidth = 2
|
||||||
|
vim.opt.tabstop = 2
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
vim.opt.expandtab = true
|
||||||
|
|
||||||
|
vim.opt.breakindent = true
|
||||||
|
|
||||||
|
vim.opt.undofile = true
|
||||||
|
|
||||||
|
vim.opt.ignorecase = true
|
||||||
|
vim.opt.smartcase = true
|
||||||
|
|
||||||
|
vim.opt.signcolumn = 'yes'
|
||||||
|
|
||||||
|
vim.opt.updatetime = 250
|
||||||
|
|
||||||
|
vim.opt.timeoutlen = 300
|
||||||
|
|
||||||
|
vim.opt.splitright = true
|
||||||
|
vim.opt.splitbelow = true
|
||||||
|
|
||||||
|
vim.opt.list = true
|
||||||
|
vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' }
|
||||||
|
|
||||||
|
vim.opt.inccommand = 'split'
|
||||||
|
|
||||||
|
vim.opt.cursorline = true
|
||||||
|
|
||||||
|
vim.opt.scrolloff = 8
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd('TextYankPost', {
|
||||||
|
desc = 'Highlight when yanking (copying) text',
|
||||||
|
group = vim.api.nvim_create_augroup('highlight-yank', { clear = true }),
|
||||||
|
callback = function()
|
||||||
|
vim.highlight.on_yank()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local statusline = require('mini.statusline')
|
||||||
|
statusline.setup()
|
||||||
|
statusline.section_location = function()
|
||||||
|
return '%2l:%-2v'
|
||||||
|
end
|
||||||
|
vim.cmd.colorscheme 'tokyonight-storm'
|
||||||
Loading…
Reference in a new issue