2024-04-02 20:52:48 +02:00
|
|
|
|
{ config, pkgs, ... }:
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
# neovim
|
|
|
|
|
programs.neovim = {
|
|
|
|
|
enable = true;
|
|
|
|
|
defaultEditor = true;
|
|
|
|
|
viAlias = true;
|
|
|
|
|
vimAlias = true;
|
|
|
|
|
|
|
|
|
|
# neovim config
|
|
|
|
|
extraConfig = ''
|
|
|
|
|
|
|
|
|
|
" Use tab for trigger completion with characters ahead and navigate.
|
|
|
|
|
inoremap <silent><expr> <TAB>
|
|
|
|
|
\ pumvisible() ? "\<C-n>" :
|
|
|
|
|
\ <SID>check_back_space() ? "\<TAB>" :
|
|
|
|
|
\ coc#refresh()
|
|
|
|
|
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
|
|
|
|
|
function! s:check_back_space() abort
|
|
|
|
|
let col = col('.') - 1
|
|
|
|
|
return !col || getline('.')[col - 1] =~# '\s'
|
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
|
|
" Use <c-space> to trigger completion.
|
|
|
|
|
if has('nvim')
|
|
|
|
|
inoremap <silent><expr> <c-space> coc#refresh()
|
|
|
|
|
else
|
|
|
|
|
inoremap <silent><expr> <c-@> coc#refresh()
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
" clipboard
|
|
|
|
|
set clipboard+=unnamedplus
|
|
|
|
|
|
|
|
|
|
" terminal title
|
|
|
|
|
set title
|
|
|
|
|
|
|
|
|
|
" auto-complete
|
|
|
|
|
set completeopt=menu,menuone,longest
|
|
|
|
|
|
|
|
|
|
" show number
|
|
|
|
|
set number
|
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
# lua config
|
|
|
|
|
extraLuaConfig = ''
|
|
|
|
|
|
|
|
|
|
-- set mapleader
|
|
|
|
|
vim.g.mapleader = ' '
|
|
|
|
|
vim.g.maplocalleader = ' '
|
|
|
|
|
|
|
|
|
|
-- set vim options
|
|
|
|
|
vim.opt.backspace = '2'
|
|
|
|
|
vim.opt.laststatus = 2
|
|
|
|
|
vim.opt.cursorline = true
|
|
|
|
|
|
|
|
|
|
-- set scrolloff
|
|
|
|
|
vim.opt.scrolloff = 10
|
|
|
|
|
|
|
|
|
|
-- indentation
|
|
|
|
|
vim.opt.tabstop = 2
|
|
|
|
|
vim.opt.shiftwidth = 2
|
|
|
|
|
vim.opt.expandtab = true
|
|
|
|
|
vim.opt.smartindent = true
|
2024-04-02 21:26:08 +02:00
|
|
|
|
|
|
|
|
|
-- load plugins
|
2024-04-02 23:08:02 +02:00
|
|
|
|
-- neo-tree
|
2024-04-02 21:26:08 +02:00
|
|
|
|
require("neo-tree").setup({
|
2024-04-02 22:33:04 +02:00
|
|
|
|
filesystem = {
|
|
|
|
|
filtered_items = {
|
2024-04-02 23:20:05 +02:00
|
|
|
|
visible = true,
|
2024-04-02 22:33:04 +02:00
|
|
|
|
hide_dotfiles = false,
|
|
|
|
|
hide_gitignored = false,
|
|
|
|
|
},
|
|
|
|
|
},
|
2024-04-02 21:26:08 +02:00
|
|
|
|
window = {
|
|
|
|
|
position = "left",
|
2024-04-02 23:32:44 +02:00
|
|
|
|
width = 45,
|
2024-04-02 21:26:08 +02:00
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
require("neo-tree.sources.manager").show("filesystem")
|
|
|
|
|
|
2024-04-02 23:08:02 +02:00
|
|
|
|
-- nvim-treesitter
|
|
|
|
|
require("nvim-treesitter").setup({
|
|
|
|
|
build = ":TSUpdate",
|
|
|
|
|
config = function ()
|
|
|
|
|
local configs = require("nvim-treesitter.configs")
|
|
|
|
|
configs.setup({
|
|
|
|
|
ensure_installed = { "ansible", "css", "lua", "nix,", "yaml" },
|
|
|
|
|
sync_install = false,
|
|
|
|
|
highlight = { enable = true },
|
|
|
|
|
indent = { enable = true },
|
|
|
|
|
})
|
|
|
|
|
end
|
|
|
|
|
})
|
2024-04-02 20:52:48 +02:00
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
# auto-complete
|
|
|
|
|
coc = {
|
|
|
|
|
enable = true;
|
|
|
|
|
settings = {
|
|
|
|
|
"suggest.noselect" = true;
|
|
|
|
|
"suggest.enablePreview" = true;
|
|
|
|
|
"suggest.enablePreselect" = true;
|
|
|
|
|
"suggest.disableKind" = true;
|
|
|
|
|
|
|
|
|
|
"diagnostic.errorSign" = "✘";
|
|
|
|
|
"diagnostic.infoSign" = "ℹ";
|
|
|
|
|
"diagnostic.hintSign" = "➤";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# plugins
|
|
|
|
|
plugins = with pkgs.vimPlugins; [
|
2024-04-02 21:26:08 +02:00
|
|
|
|
neo-tree-nvim
|
2024-04-02 23:08:02 +02:00
|
|
|
|
nvim-treesitter
|
2024-04-02 20:52:48 +02:00
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
}
|
2024-04-02 21:26:08 +02:00
|
|
|
|
|