diff --git a/modules/features/vim/default.nix b/modules/features/vim/default.nix new file mode 100644 index 0000000..a1d89b0 --- /dev/null +++ b/modules/features/vim/default.nix @@ -0,0 +1,22 @@ +{ + inputs, + moduleWithSystem, + ... +}: { + flake.nixosModules.vim = moduleWithSystem ({pkgs, ...}: let + modules = []; + in {}); + perSystem = {pkgs, ...}: { + packages.vim = inputs.wrappers.wrappers.vim.wrap { + inherit pkgs; + plugins = with pkgs.vimPlugins; [ + # vim-lsp + # vim-lsp-settings + # asyncomplete-vim + # asyncomplete-lsp-vim + ale + ]; + vimrc = builtins.readFile ./vimrc; + }; + }; +} diff --git a/modules/features/vim/vimrc b/modules/features/vim/vimrc new file mode 100644 index 0000000..4deef7b --- /dev/null +++ b/modules/features/vim/vimrc @@ -0,0 +1,62 @@ +" Set colorscheme and enable highlighting +colorscheme catppuccin +set termguicolors +syntax on + +" Set tab stuff +set tabstop=2 +set shiftwidth=2 +set expandtab +set softtabstop=2 + +" Enable line numbers +set number +set relativenumber +set cursorline + " Make cursorlinenum a different color +augroup colorAutoCmds + autocmd! + autocmd ColorScheme * highlight CursorLineNr cterm=bold guifg=#cba6f7 +augroup END + +set ignorecase +set smartcase +set hlsearch +set incsearch + +" Set different cursor shapes depending on mode +let &t_SI = "\e[6 q" +let &t_EI = "\e[2 q" +augroup cursorCmds +au! +autocmd VimEnter * silent !echo -ne "\e[2 q" +augroup END + +" Completion menu +"inoremap pumvisible() ? "\" : "\" +"inoremap pumvisible() ? "\" : "\" +"inoremap pumvisible() ? asyncomplete#close_popup() : "\" + +set omnifunc=ale#completion#OmniFunc +nnoremap K ALEHover +nnoremap gd ALEGoToDefinition +nnoremap gr ALEFindReferences +nnoremap ca ALECodeAc +let g:ale_completion_enabled = 1 + +autocmd User lsp_setup call lsp#register_server({ + \ 'name': 'nixd', + \ 'cmd': ['nixd'], + \ 'allowlist': ['nix'], + \ }) + +let g:ale_linters = { +\ 'nix': ['nixd'], +\} + +let g:ale_fixers = { +\ 'nix': ['alejandra'], +\} + +let g:ale_fix_on_save = 1 +