diff --git a/users/coyote/home.nix b/users/coyote/home.nix index 16f0fa9..0c81b8f 100644 --- a/users/coyote/home.nix +++ b/users/coyote/home.nix @@ -5,7 +5,10 @@ username = "coyote"; homeDirectory = "/home/coyote"; shell.enableShellIntegration = true; + packages = with pkgs; [ + # devel + nodejs # productivity libreoffice-fresh karp @@ -26,6 +29,12 @@ # emulation (unstable.bottles.override { removeWarningPopup = true; }) ]; + + file.".vim/coc-settings.json".text = builtins.toJSON { + "suggest.noselect" = true; + "diagnostic.virtualText" = true; + "coc.preferences.formatOnSaveFiletypes" = [ "nix" "json" "javascript" "python" ]; + }; }; services.flatpak = { @@ -37,11 +46,7 @@ ]; overrides = { global = { Context.sockets = ["wayland" "!x11" "!fallback-x11"]; }; - settings = { - Environment = { - XCURSOR_PATH = "/run/host/user-share/icons:/run/host/share/icons"; - }; - }; + settings.Environment.XCURSOR_PATH = "/run/host/user-share/icons:/run/host/share/icons"; }; }; @@ -79,9 +84,75 @@ ]; }; }; - emacs = { + vim = { enable = true; - extraConfig = "-nw"; + packageConfigurable = pkgs.unstable.vim-full; + defaultEditor = true; + plugins = with pkgs.vimPlugins.unstable; [ + indentLine + coc-nvim + ]; + extraConfig = '' + " Vim configuration + set nocompatible + set encoding=utf-8 + set backspace=indent,eol,start + set clipboard=unnamedplus + set mouse=a + set history=1000 + set updatetime=300 + + syntax on + set ruler + set showcmd + set showmode + set laststatus=2 + set wildmenu + set wildmode=longest,list,full + set ttyfast + set lazyredraw + + filetype plugin indent on + set autoindent + set smartindent + set tabstop=4 + set shiftwidth=4 + set softtabstop=4 + set expandtab + + set hlsearch + set incsearch + set ignorecase + set smartcase + set showmatch + + " indent guides + let g:indentLine_enabled = 1 + let g:indentLine_char = "|" + let g:indentLine_setColors = 1 + + " per-language indent settings + augroup LanguageSpecificSettings + autocmd! + autocmd FileType javascript,typescript,html,css,json,nix setlocal tabstop=2 shiftwidth=2 softtabstop=2 expandtab + autocmd FileType python,rust,scheme setlocal tabstop=4 shiftwidth=4 softtabstop=4 expandtab + autocmd FileType go,make setlocal tabstop=4 shiftwidth=4 noexpandtab + augroup END + + " coc.nvim config + inoremap + \ coc#pum#visible() ? coc#pum#next(1) : + \ CheckBackspace() ? "\" : + \ coc#refresh() + inoremap coc#pum#visible() ? coc#pum#prev(1) : "\" + + inoremap coc#pum#visible() ? coc#pum#confirm() : "\" + + function! CheckBackspace() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' + endfunction + ''; }; fastfetch = { enable = true;