{ config, pkgs, ... }: let vim-material = pkgs.vimUtils.buildVimPlugin { name = "vim-material"; src = pkgs.fetchFromGitHub { owner = "kaicataldo"; repo = "material.vim"; rev = "7dfa4bbf1fe43fcebcd836ef4f3b1342b4ea69be"; sha256 = "1ihakmh07j47rzy76242zbipcgdn4yh5bivz09469hr1jj2snyj3"; }; }; in { programs.neovim = { enable = true; viAlias = true; vimAlias = true; vimdiffAlias = true; package = pkgs.neovim-nightly; plugins = with pkgs.vimPlugins; [ coc-nvim coc-eslint coc-json coc-rust-analyzer coc-tsserver coc-yaml nerdtree vim-airline vim-material vim-nix vim-repeat vim-surround lf-vim vim-floaterm (nvim-treesitter.withPlugins (p: with p; [ tree-sitter-nix tree-sitter-typescript ])) ]; withNodeJs = true; extraConfig = '' " configuration syntax enable set relativenumber number set noswapfile set hlsearch set ignorecase set incsearch set title set clipboard^=unnamed set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab set expandtab " theming hi MatchParen cterm=underline ctermbg=none ctermfg=white set termguicolors let g:airline_theme='material' let g:material_terminal_italics = 1 let g:material_theme_style = 'ocean' colorscheme material " using tab for trigger completion function! s:check_back_space() abort let col = col('.') - 1 return !col || getline('.')[col - 1] =~ '\s' endfunction inoremap \ pumvisible() ? "\" : \ check_back_space() ? "\" : \ coc#refresh() inoremap pumvisible() ? "\" : "\u\" inoremap coc#refresh() " various aliases nnoremap :Lf nnoremap r :source $MYVIMRC command! -nargs=0 Sw w !doas tee % > /dev/null " disable read-only warning au BufEnter * set noro " disable empty line tildes set fcs=eob:\ lua <