{ pkgs, config, ... }@inputs: { programs.neovim = { enable = true; vimdiffAlias = true; withNodeJs = true; plugins = with pkgs.vimPlugins; [ { plugin = coc-nvim; config = '' nmap (coc-rename) inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" " Remap and for scroll float windows/popups. if has('nvim-0.4.0') || has('patch-8.2.0750') nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" endif ''; } fzf-vim { plugin = iceberg-vim; config = "colorscheme iceberg"; } { plugin = nvim-dap; config = '' lua < :lua require'dap'.continue() nnoremap :lua require'dap'.step_over() nnoremap :lua require'dap'.step_into() nnoremap :lua require'dap'.step_out() nnoremap b :lua require'dap'.toggle_breakpoint() nnoremap B :lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: ')) nnoremap lp :lua require'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: ')) nnoremap dr :lua require'dap'.repl.open() nnoremap dl :lua require'dap'.run_last() ''; } { plugin = nvim-dap-ui; config = "lua require('dapui').setup()"; } vim-sleuth vim-nix pkgs.go-fold-if-err-nil coc-json coc-go coc-html coc-pyright coc-tsserver coc-clangd neoformat undotree { plugin = vim-jsdoc; config = '' let g:jsdoc_formatter = "tsdoc" let g:typescript_indent_disable = 1 ''; } ]; extraConfig = '' set background=dark set termguicolors set ic set number set autoindent set completeopt=menuone,noinsert,noselect set shortmess+=c ''; }; home.file."coc-settings" = (import ./coc { inherit pkgs config; }); }