merged
This commit is contained in:
		
							parent
							
								
									b5523404ce
								
							
						
					
					
						commit
						79436f8c1d
					
				
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| result | ||||
| result/* | ||||
							
								
								
									
										2
									
								
								config/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								config/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| result | ||||
| result/* | ||||
|  | @ -38,7 +38,7 @@ | |||
|  # }; | ||||
| 
 | ||||
|   networking.hostName = "curve"; # Define your hostname. | ||||
|   #networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant. | ||||
|   networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant. | ||||
| 
 | ||||
|   time.timeZone = "Australia/Brisbane"; | ||||
| 
 | ||||
|  | @ -62,7 +62,7 @@ | |||
| 
 | ||||
|   users.users.anish = { | ||||
|     isNormalUser = true; | ||||
|     extraGroups = [ "wheel" ];  | ||||
|     extraGroups = [ "wheel" "video" ];  | ||||
|   }; | ||||
| 
 | ||||
|   # Enable the OpenSSH daemon. | ||||
|  |  | |||
|  | @ -2,6 +2,7 @@ | |||
| { | ||||
|   imports = [ | ||||
|     ../home.nix | ||||
|     ../common.nix | ||||
|     ./hardware-configuration.nix | ||||
|     ./configuration.nix | ||||
|   ]; | ||||
|  | @ -14,16 +15,16 @@ | |||
|         discord.enable = true; | ||||
|         rofi.enable = true; | ||||
|         # godot.enable = true; | ||||
|         signal.enable = true; | ||||
|         # signal.enable = true; | ||||
|       }; | ||||
|       browsers = { | ||||
|         default = "brave"; | ||||
|         brave.enable = true; | ||||
|         default = "firefox"; | ||||
|         brave.enable = false; | ||||
|         firefox.enable = true; | ||||
|         qutebrowser.enable = true; | ||||
|       }; | ||||
|       gaming = { | ||||
|         steam.enable = true; | ||||
|         # steam.enable = true; | ||||
|         # emulators.enable = true; | ||||
|         # emulators.psx.enable = true; | ||||
|       }; | ||||
|  | @ -33,38 +34,38 @@ | |||
|         graphics.enable = true; | ||||
|         mpv.enable = true; | ||||
|         recording.enable = true; | ||||
|         spotify.enable = true; | ||||
|         spotify.enable = false; | ||||
|       }; | ||||
|       term = { | ||||
|         default = "xst"; | ||||
|         st.enable = true; | ||||
|       }; | ||||
|       vm = { | ||||
|         qemu.enable = true; | ||||
|         qemu.enable = false; | ||||
|       }; | ||||
|     }; | ||||
|     dev = { | ||||
|       node.enable = true; | ||||
|       rust.enable = true; | ||||
|       node.enable = false; | ||||
|       rust.enable = false; | ||||
|       python.enable = true; | ||||
|     }; | ||||
|     editors = { | ||||
|       default = "emacs"; | ||||
|       emacs.enable = true; | ||||
|       #vim.enable = true; | ||||
|       default = "vim"; | ||||
|       #emacs.enable = true; | ||||
|       vim.enable = true; | ||||
|     }; | ||||
|     shell = { | ||||
|       adl.enable = true; | ||||
|       vaultwarden.enable = true; | ||||
|       vaultwarden.enable = false; | ||||
|       direnv.enable = true; | ||||
|       git.enable    = true; | ||||
|       gnupg.enable  = true; | ||||
|       tmux.enable   = true; | ||||
|       zsh.enable    = true; | ||||
|       tmux.enable   = false; | ||||
|       zsh.enable    = false; | ||||
|     }; | ||||
|     services = { | ||||
|       ssh.enable = true; | ||||
|       docker.enable = true; | ||||
|       docker.enable = false; | ||||
|       # Needed occasionally to help the parental units with PC problems | ||||
|       # teamviewer.enable = true; | ||||
|     }; | ||||
|  | @ -76,13 +77,14 @@ | |||
|   programs.ssh.startAgent = true; | ||||
|   # services.openssh.startWhenNeeded = true; | ||||
| 
 | ||||
|   networking.networkmanager.enable = true; | ||||
|   # networking.networkmanager.enable = true; | ||||
|   # The global useDHCP flag is deprecated, therefore explicitly set to false | ||||
|   # here. Per-interface useDHCP will be mandatory in the future, so this | ||||
|   # generated config replicates the default behaviour. | ||||
|   networking.useDHCP = false; | ||||
| 	programs.neovim.enable = true; | ||||
| 
 | ||||
|   programs.light.enable = true; | ||||
| 
 | ||||
|   ## Personal backups | ||||
|   # Syncthing is a bit heavy handed for my needs, so rsync to my NAS instead. | ||||
|  |  | |||
|  | @ -33,247 +33,248 @@ in { | |||
|     #   '' | ||||
|     # ]; | ||||
| 
 | ||||
|     extraConfig = '' | ||||
|       set tabstop=2 | ||||
|       set showmatch | ||||
|       set shiftwidth=2 | ||||
|       set noexpandtab | ||||
|       set autoindent | ||||
|     #home-manager.programs.nvim = { | ||||
|     #  extraConfig = '' | ||||
|     #    set tabstop=2 | ||||
|     #    set showmatch | ||||
|     #    set shiftwidth=2 | ||||
|     #    set noexpandtab | ||||
|     #    set autoindent | ||||
|     #     | ||||
|     #    set foldmethod=indent   " fold based on indent | ||||
|     #    set number | ||||
|     #    set nocompatible | ||||
|     #    set relativenumber | ||||
|     #    set showtabline=2 | ||||
|     #    set autowriteall | ||||
|     #    		syntax on | ||||
|     #    set list lcs=tab:\|\  | ||||
|     #    filetype plugin on | ||||
|     #     | ||||
|     #    set termguicolors | ||||
|     #    let ayucolor="dark" | ||||
|     #    colorscheme ayu | ||||
|     #     | ||||
|     #    " window | ||||
|     #    nmap <leader>wh  :topleft  vnew<CR> | ||||
|     #    nmap <leader>wl :botright vnew<CR> | ||||
|     #    nmap <leader>wk    :topleft  new<CR> | ||||
|     #    nmap <leader>wj  :botright new<CR> | ||||
|     #     | ||||
|     #    let mapleader = "\<Space>" | ||||
|     #     | ||||
|     #    " lightline colorscheme | ||||
|     #    let g:lightline = { | ||||
|     #    			\ 'colorscheme': 'seoul256', | ||||
|     #    			\ } | ||||
|     #     | ||||
|     #    " moving splits with vim movements. | ||||
|     #    :tnoremap <A-h> <C-\><C-N><C-w>h | ||||
|     #    :tnoremap <A-j> <C-\><C-N><C-w>j | ||||
|     #    :tnoremap <A-k> <C-\><C-N><C-w>k | ||||
|     #    :tnoremap <A-l> <C-\><C-N><C-w>l | ||||
|     #    :inoremap <A-h> <C-\><C-N><C-w>h | ||||
|     #    :inoremap <A-j> <C-\><C-N><C-w>j | ||||
|     #    :inoremap <A-k> <C-\><C-N><C-w>k | ||||
|     #    :inoremap <A-l> <C-\><C-N><C-w>l | ||||
|     #    :nnoremap <A-h> <leader>h | ||||
|     #    :nnoremap <A-j> <leader>j | ||||
|     #    :nnoremap <A-k> <leader>k | ||||
|     #    :nnoremap <A-l> <leader>l | ||||
|     #    :nnoremap <F5> "=strftime("%Y-%m-%d %H:%M:") | ||||
|     #    :inoremap <F5> <C-R>=strftime("%Y-%m-%d %H:%M:") | ||||
|     #     | ||||
|     #    " exit normal mode in terminal | ||||
|     #    :tnoremap <C-n> <C-\><C-n> | ||||
|     #     | ||||
|     #    let g:syntastic_always_populate_loc_list = 1 | ||||
|     #    let g:syntastic_auto_loc_list = 1 | ||||
|     #    let g:syntastic_check_on_open = 1 | ||||
|     #    let g:syntastic_check_on_wq = 0 | ||||
|     #     | ||||
|     #    let g:rainbow_active = 0 | ||||
|     #    autocmd BufReadPost,BufNewFile c,py,nix RainbowParenthesesToggleAll | ||||
|     #     | ||||
|     #    " keyboard commands | ||||
|     #    map <leader>t :NERDTreeToggle<CR> | ||||
|     #    map <leader>s :w<CR> | ||||
|     #    map <leader>q :wq<CR> | ||||
|     #    map <leader>r :RainbowParenthesesToggleAll<CR> | ||||
|     #    map <leader>zs :ZettelSearch<CR> | ||||
|     #    map <leader>zo :ZettelOpen<CR> | ||||
|     #    map <leader>zn :ZettelNew<CR> | ||||
|     #     | ||||
|     #     | ||||
|     #    " NERDTree  | ||||
|     #    " open on directory | ||||
|     #    autocmd StdinReadPre * let s:std_in=1 | ||||
|     #     | ||||
|     #    " coc | ||||
|     #    " | ||||
|     #    " if hidden is not set, TextEdit might fail. | ||||
|     #    set hidden | ||||
|     #     | ||||
|     #    " Some servers have issues with backup files, see #649 | ||||
|     #    set nobackup | ||||
|     #    set nowritebackup | ||||
|     #     | ||||
|     #    " Better display for messages | ||||
|     #    set cmdheight=2 | ||||
|     #     | ||||
|     #    " You will have bad experience for diagnostic messages when it's default 4000. | ||||
|     #    set updatetime=300 | ||||
|     #     | ||||
|     #    " don't give |ins-completion-menu| messages. | ||||
|     #    set shortmess+=c | ||||
|     #     | ||||
|     #    " always show signcolumns | ||||
|     #    set signcolumn=yes | ||||
|     #     | ||||
|     #    " Use tab for trigger completion with characters ahead and navigate. | ||||
|     #    " Use command ':verbose imap <tab>' to make sure tab is not mapped by other plugin. | ||||
|     #    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. | ||||
|     #    inoremap <silent><expr> <c-space> coc#refresh() | ||||
|     #     | ||||
|     #    " Use <cr> to confirm completion, `<C-g>u` means break undo chain at current position. | ||||
|     #    " Coc only does snippet and additional edit on confirm. | ||||
|     #    inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" | ||||
|     #    " Or use `complete_info` if your vim support it, like: | ||||
|     #    " inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>" | ||||
|     #     | ||||
|     #    " Use `[g` and `]g` to navigate diagnostics | ||||
|     #    nmap <silent> [g <Plug>(coc-diagnostic-prev) | ||||
|     #    nmap <silent> ]g <Plug>(coc-diagnostic-next) | ||||
|     #     | ||||
|     #    " Remap keys for gotos | ||||
|     #    nmap <silent> gd <Plug>(coc-definition) | ||||
|     #    nmap <silent> gy <Plug>(coc-type-definition) | ||||
|     #    nmap <silent> gi <Plug>(coc-implementation) | ||||
|     #    nmap <silent> gr <Plug>(coc-references) | ||||
|     #     | ||||
|     #    " Use K to show documentation in preview window | ||||
|     #    nnoremap <silent> K :call <SID>show_documentation()<CR> | ||||
|     #     | ||||
|     #    function! s:show_documentation() | ||||
|     #    	if (index(['vim','help'], &filetype) >= 0) | ||||
|     #    		execute 'h '.expand('<cword>') | ||||
|     #    	else | ||||
|     #    		call CocAction('doHover') | ||||
|     #    	endif | ||||
|     #    endfunction | ||||
|     #     | ||||
|     #    " Highlight symbol under cursor on CursorHold | ||||
|     #    autocmd CursorHold * silent call CocActionAsync('highlight') | ||||
|     #     | ||||
|     #    " Remap for rename current word | ||||
|     #    nmap <leader>rn <Plug>(coc-rename) | ||||
|     #     | ||||
|     #    " Remap for format selected region | ||||
|     #    xmap <leader>f  <Plug>(coc-format-selected) | ||||
|     #    nmap <leader>f  <Plug>(coc-format-selected) | ||||
|     #     | ||||
|     #    augroup mygroup | ||||
|     #    	autocmd! | ||||
|     #    	" Setup formatexpr specified filetype(s). | ||||
|     #    	autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') | ||||
|     #    	" Update signature help on jump placeholder | ||||
|     #    	autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') | ||||
|     #    augroup end | ||||
|     #     | ||||
|     #    " Remap for do codeAction of selected region, ex: `<leader>aap` for current paragraph | ||||
|     #    xmap <leader>a  <Plug>(coc-codeaction-selected) | ||||
|     #    nmap <leader>a  <Plug>(coc-codeaction-selected) | ||||
|     #     | ||||
|     #    " Remap for do codeAction of current line | ||||
|     #    nmap <leader>ac  <Plug>(coc-codeaction) | ||||
|     #    " Fix autofix problem of current line | ||||
|     #    nmap <leader>qf  <Plug>(coc-fix-current) | ||||
|     #     | ||||
|     #    " Create mappings for function text object, requires document symbols feature of languageserver. | ||||
|     #    xmap if <Plug>(coc-funcobj-i) | ||||
|     #    xmap af <Plug>(coc-funcobj-a) | ||||
|     #    omap if <Plug>(coc-funcobj-i) | ||||
|     #    omap af <Plug>(coc-funcobj-a) | ||||
|     #     | ||||
|     #    " Use <C-d> for select selections ranges, needs server support, like: coc-tsserver, coc-python | ||||
|     #    nmap <silent> <C-d> <Plug>(coc-range-select) | ||||
|     #    xmap <silent> <C-d> <Plug>(coc-range-select) | ||||
|     #     | ||||
|     #    " Use `:Format` to format current buffer | ||||
|     #    command! -nargs=0 Format :call CocAction('format') | ||||
|     #     | ||||
|     #    " Use `:Fold` to fold current buffer | ||||
|     #    command! -nargs=? Fold :call     CocAction('fold', <f-args>) | ||||
|     #     | ||||
|     #    " use `:OR` for organize import of current buffer | ||||
|     #    command! -nargs=0 OR   :call     CocAction('runCommand', 'editor.action.organizeImport') | ||||
|     #     | ||||
|     #    " Add status line support, for integration with other plugin, checkout `:h coc-status` | ||||
|     #    " set statusline^=%{coc#status()}%{get(b:,'coc_current_function',"")} | ||||
|     #     | ||||
|     #    " Using CocList | ||||
|     #    " Show all diagnostics | ||||
|     #    nnoremap <silent> <space>a  :<C-u>CocList diagnostics<cr> | ||||
|     #    " Manage extensions | ||||
|     #    nnoremap <silent> <space>e  :<C-u>CocList extensions<cr> | ||||
|     #    " Show commands | ||||
|     #    nnoremap <silent> <space>c  :<C-u>CocList commands<cr> | ||||
|     #    " Find symbol of current document | ||||
|     #    nnoremap <silent> <space>o  :<C-u>CocList outline<cr> | ||||
|     #    " Search workspace symbols | ||||
|     #    nnoremap <silent> <space>s  :<C-u>CocList -I symbols<cr> | ||||
|     #    " Do default action for next item. | ||||
|     #    nnoremap <silent> <space>j  :<C-u>CocNext<CR> | ||||
|     #    " Do default action for previous item. | ||||
|     #    nnoremap <silent> <space>k  :<C-u>CocPrev<CR> | ||||
|     #    " Resume latest coc list | ||||
|     #    nnoremap <silent> <space>p  :<C-u>CocListResume<CR> | ||||
|     #     | ||||
|     #    au BufNewFile,BufRead *.frag,*.vert,*.fp,*.vp,*.glsl setf glsl | ||||
|     #  ''; | ||||
| 
 | ||||
|       set foldmethod=indent   " fold based on indent | ||||
|       set number | ||||
|       set nocompatible | ||||
|       set relativenumber | ||||
|       set showtabline=2 | ||||
|       set autowriteall | ||||
|       		syntax on | ||||
|       set list lcs=tab:\|\  | ||||
|       filetype plugin on | ||||
|        | ||||
|       set termguicolors | ||||
|       let ayucolor="dark" | ||||
|       " colorscheme ayu | ||||
|        | ||||
|       " window | ||||
|       nmap <leader>wh  :topleft  vnew<CR> | ||||
|       nmap <leader>wl :botright vnew<CR> | ||||
|       nmap <leader>wk    :topleft  new<CR> | ||||
|       nmap <leader>wj  :botright new<CR> | ||||
|        | ||||
|       let mapleader = "\<Space>" | ||||
|        | ||||
|       " lightline colorscheme | ||||
|       let g:lightline = { | ||||
|       			\ 'colorscheme': 'seoul256', | ||||
|       			\ } | ||||
|        | ||||
|       " moving splits with vim movements. | ||||
|       :tnoremap <A-h> <C-\><C-N><C-w>h | ||||
|       :tnoremap <A-j> <C-\><C-N><C-w>j | ||||
|       :tnoremap <A-k> <C-\><C-N><C-w>k | ||||
|       :tnoremap <A-l> <C-\><C-N><C-w>l | ||||
|       :inoremap <A-h> <C-\><C-N><C-w>h | ||||
|       :inoremap <A-j> <C-\><C-N><C-w>j | ||||
|       :inoremap <A-k> <C-\><C-N><C-w>k | ||||
|       :inoremap <A-l> <C-\><C-N><C-w>l | ||||
|       :nnoremap <A-h> <leader>h | ||||
|       :nnoremap <A-j> <leader>j | ||||
|       :nnoremap <A-k> <leader>k | ||||
|       :nnoremap <A-l> <leader>l | ||||
|       :nnoremap <F5> "=strftime("%Y-%m-%d %H:%M:") | ||||
|       :inoremap <F5> <C-R>=strftime("%Y-%m-%d %H:%M:") | ||||
|        | ||||
|       " exit normal mode in terminal | ||||
|       :tnoremap <C-n> <C-\><C-n> | ||||
|        | ||||
|       let g:syntastic_always_populate_loc_list = 1 | ||||
|       let g:syntastic_auto_loc_list = 1 | ||||
|       let g:syntastic_check_on_open = 1 | ||||
|       let g:syntastic_check_on_wq = 0 | ||||
|        | ||||
|       let g:rainbow_active = 0 | ||||
|       autocmd BufReadPost,BufNewFile c,py,nix RainbowParenthesesToggleAll | ||||
|        | ||||
|       " keyboard commands | ||||
|       map <leader>t :NERDTreeToggle<CR> | ||||
|       map <leader>s :w<CR> | ||||
|       map <leader>q :wq<CR> | ||||
|       map <leader>r :RainbowParenthesesToggleAll<CR> | ||||
|       map <leader>zs :ZettelSearch<CR> | ||||
|       map <leader>zo :ZettelOpen<CR> | ||||
|       map <leader>zn :ZettelNew<CR> | ||||
|        | ||||
|        | ||||
|       " NERDTree  | ||||
|       " open on directory | ||||
|       autocmd StdinReadPre * let s:std_in=1 | ||||
|        | ||||
|       " coc | ||||
|       " | ||||
|       " if hidden is not set, TextEdit might fail. | ||||
|       set hidden | ||||
|        | ||||
|       " Some servers have issues with backup files, see #649 | ||||
|       set nobackup | ||||
|       set nowritebackup | ||||
|        | ||||
|       " Better display for messages | ||||
|       set cmdheight=2 | ||||
|        | ||||
|       " You will have bad experience for diagnostic messages when it's default 4000. | ||||
|       set updatetime=300 | ||||
|        | ||||
|       " don't give |ins-completion-menu| messages. | ||||
|       set shortmess+=c | ||||
|        | ||||
|       " always show signcolumns | ||||
|       set signcolumn=yes | ||||
|        | ||||
|       " Use tab for trigger completion with characters ahead and navigate. | ||||
|       " Use command ':verbose imap <tab>' to make sure tab is not mapped by other plugin. | ||||
|       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. | ||||
|       inoremap <silent><expr> <c-space> coc#refresh() | ||||
|        | ||||
|       " Use <cr> to confirm completion, `<C-g>u` means break undo chain at current position. | ||||
|       " Coc only does snippet and additional edit on confirm. | ||||
|       inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" | ||||
|       " Or use `complete_info` if your vim support it, like: | ||||
|       " inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>" | ||||
|        | ||||
|       " Use `[g` and `]g` to navigate diagnostics | ||||
|       nmap <silent> [g <Plug>(coc-diagnostic-prev) | ||||
|       nmap <silent> ]g <Plug>(coc-diagnostic-next) | ||||
|        | ||||
|       " Remap keys for gotos | ||||
|       nmap <silent> gd <Plug>(coc-definition) | ||||
|       nmap <silent> gy <Plug>(coc-type-definition) | ||||
|       nmap <silent> gi <Plug>(coc-implementation) | ||||
|       nmap <silent> gr <Plug>(coc-references) | ||||
|        | ||||
|       " Use K to show documentation in preview window | ||||
|       nnoremap <silent> K :call <SID>show_documentation()<CR> | ||||
|        | ||||
|       function! s:show_documentation() | ||||
|       	if (index(['vim','help'], &filetype) >= 0) | ||||
|       		execute 'h '.expand('<cword>') | ||||
|       	else | ||||
|       		call CocAction('doHover') | ||||
|       	endif | ||||
|       endfunction | ||||
|        | ||||
|       " Highlight symbol under cursor on CursorHold | ||||
|       autocmd CursorHold * silent call CocActionAsync('highlight') | ||||
|        | ||||
|       " Remap for rename current word | ||||
|       nmap <leader>rn <Plug>(coc-rename) | ||||
|        | ||||
|       " Remap for format selected region | ||||
|       xmap <leader>f  <Plug>(coc-format-selected) | ||||
|       nmap <leader>f  <Plug>(coc-format-selected) | ||||
|        | ||||
|       augroup mygroup | ||||
|       	autocmd! | ||||
|       	" Setup formatexpr specified filetype(s). | ||||
|       	autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') | ||||
|       	" Update signature help on jump placeholder | ||||
|       	autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') | ||||
|       augroup end | ||||
|        | ||||
|       " Remap for do codeAction of selected region, ex: `<leader>aap` for current paragraph | ||||
|       xmap <leader>a  <Plug>(coc-codeaction-selected) | ||||
|       nmap <leader>a  <Plug>(coc-codeaction-selected) | ||||
|        | ||||
|       " Remap for do codeAction of current line | ||||
|       nmap <leader>ac  <Plug>(coc-codeaction) | ||||
|       " Fix autofix problem of current line | ||||
|       nmap <leader>qf  <Plug>(coc-fix-current) | ||||
|        | ||||
|       " Create mappings for function text object, requires document symbols feature of languageserver. | ||||
|       xmap if <Plug>(coc-funcobj-i) | ||||
|       xmap af <Plug>(coc-funcobj-a) | ||||
|       omap if <Plug>(coc-funcobj-i) | ||||
|       omap af <Plug>(coc-funcobj-a) | ||||
|        | ||||
|       " Use <C-d> for select selections ranges, needs server support, like: coc-tsserver, coc-python | ||||
|       nmap <silent> <C-d> <Plug>(coc-range-select) | ||||
|       xmap <silent> <C-d> <Plug>(coc-range-select) | ||||
|        | ||||
|       " Use `:Format` to format current buffer | ||||
|       command! -nargs=0 Format :call CocAction('format') | ||||
|        | ||||
|       " Use `:Fold` to fold current buffer | ||||
|       command! -nargs=? Fold :call     CocAction('fold', <f-args>) | ||||
|        | ||||
|       " use `:OR` for organize import of current buffer | ||||
|       command! -nargs=0 OR   :call     CocAction('runCommand', 'editor.action.organizeImport') | ||||
|        | ||||
|       " Add status line support, for integration with other plugin, checkout `:h coc-status` | ||||
|       " set statusline^=%{coc#status()}%{get(b:,'coc_current_function',"")} | ||||
|        | ||||
|       " Using CocList | ||||
|       " Show all diagnostics | ||||
|       nnoremap <silent> <space>a  :<C-u>CocList diagnostics<cr> | ||||
|       " Manage extensions | ||||
|       nnoremap <silent> <space>e  :<C-u>CocList extensions<cr> | ||||
|       " Show commands | ||||
|       nnoremap <silent> <space>c  :<C-u>CocList commands<cr> | ||||
|       " Find symbol of current document | ||||
|       nnoremap <silent> <space>o  :<C-u>CocList outline<cr> | ||||
|       " Search workspace symbols | ||||
|       nnoremap <silent> <space>s  :<C-u>CocList -I symbols<cr> | ||||
|       " Do default action for next item. | ||||
|       nnoremap <silent> <space>j  :<C-u>CocNext<CR> | ||||
|       " Do default action for previous item. | ||||
|       nnoremap <silent> <space>k  :<C-u>CocPrev<CR> | ||||
|       " Resume latest coc list | ||||
|       nnoremap <silent> <space>p  :<C-u>CocListResume<CR> | ||||
|        | ||||
|       au BufNewFile,BufRead *.frag,*.vert,*.fp,*.vp,*.glsl setf glsl | ||||
|     ''; | ||||
| 
 | ||||
|     extraPackages = with pkgs.vimPlugins; [ | ||||
|       vim-nix | ||||
|       fzf-vim | ||||
|       vim-elixir | ||||
|       emmet-vim | ||||
|       nerdtree | ||||
|       goyo-vim | ||||
|       vim-sneak | ||||
|       lightline-vim | ||||
|       csv-vim | ||||
|       vimwiki | ||||
|       coc-nvim | ||||
|       coc-json | ||||
|       coc-python | ||||
|       coc-pairs | ||||
|       coc-emmet | ||||
|       emmet-vim | ||||
|       LanguageClient-neovim | ||||
|       ayu-vim | ||||
|       rainbow_parentheses-vim | ||||
|       vim-surround | ||||
|       vim-fugitive | ||||
|       #iron-nvim | ||||
|       #nvim-colorizer | ||||
|       vim-devicons | ||||
|       # testing | ||||
|       #vim-processing | ||||
|       #vim-tidal | ||||
|       taskwiki | ||||
|       #vim-zettel | ||||
|     ]; | ||||
|   }; | ||||
|     #  extraPackages = with pkgs.vimPlugins; [ | ||||
|     #    vim-nix | ||||
|     #    fzf-vim | ||||
|     #    vim-elixir | ||||
|     #    emmet-vim | ||||
|     #    nerdtree | ||||
|     #    goyo-vim | ||||
|     #    vim-sneak | ||||
|     #    lightline-vim | ||||
|     #    csv-vim | ||||
|     #    vimwiki | ||||
|     #    coc-nvim | ||||
|     #    coc-json | ||||
|     #    coc-python | ||||
|     #    coc-pairs | ||||
|     #    coc-emmet | ||||
|     #    emmet-vim | ||||
|     #    LanguageClient-neovim | ||||
|     #    ayu-vim | ||||
|     #    rainbow_parentheses-vim | ||||
|     #    vim-surround | ||||
|     #    vim-fugitive | ||||
|     #    #iron-nvim | ||||
|     #    #nvim-colorizer | ||||
|     #    vim-devicons | ||||
|     #    # testing | ||||
|     #    #vim-processing | ||||
|     #    #vim-tidal | ||||
|     #    taskwiki | ||||
|     #    #vim-zettel | ||||
|     #  ]; | ||||
|     #}; | ||||
| 
 | ||||
|     environment.shellAliases = { | ||||
|       vim = "nvim"; | ||||
|  |  | |||
							
								
								
									
										261
									
								
								modules/nvim.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										261
									
								
								modules/nvim.nix
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,261 @@ | |||
| { pkgs, ... }: | ||||
| 
 | ||||
| 
 | ||||
| 	#nvim | ||||
|   {  | ||||
|     environment.variables.EDITOR = "nvim"; | ||||
|     environment.shellAliases = { | ||||
|       k = "vim -c :VimwikiIndex"; | ||||
|       kz = "vim -c :VimwikiIndex -c :ZettelNew"; | ||||
|     }; | ||||
|     environment.systemPackages = with pkgs; [  | ||||
|       nodejs | ||||
|   ( neovim.override { | ||||
|   vimAlias = true; | ||||
|   configure = { | ||||
| 		packages.myPlugins = with pkgs.vimPlugins; { | ||||
| 			start = [  | ||||
| 				vim-nix | ||||
| 				fzf-vim | ||||
| 				vim-elixir | ||||
| 				emmet-vim | ||||
| 				nerdtree | ||||
| 				goyo-vim | ||||
| 				vim-sneak | ||||
| 				lightline-vim | ||||
| 				csv-vim | ||||
|   				vimwiki | ||||
|   				coc-nvim | ||||
|   				coc-json | ||||
|   				coc-python | ||||
|   				coc-pairs | ||||
|   				coc-emmet | ||||
|   				emmet-vim | ||||
|   				LanguageClient-neovim | ||||
|   				ayu-vim | ||||
|   				rainbow_parentheses-vim | ||||
|   				vim-surround | ||||
|   				vim-fugitive | ||||
|   				#iron-nvim | ||||
|   				#nvim-colorizer | ||||
|   				vim-devicons | ||||
|   				# testing | ||||
|   				#vim-processing | ||||
|   				#vim-tidal | ||||
|   				taskwiki | ||||
|   				#vim-zettel | ||||
|   				#vimwiki-sync | ||||
| 			]; | ||||
| 		}; | ||||
|     customRC = '' | ||||
| 	set tabstop=2 | ||||
| 	set showmatch | ||||
| 	set shiftwidth=2 | ||||
| 	set noexpandtab | ||||
| 	set autoindent | ||||
| 
 | ||||
| 	set foldmethod=indent   " fold based on indent | ||||
| 	set number | ||||
| 	set nocompatible | ||||
| 	set relativenumber | ||||
| 	set showtabline=2 | ||||
| 	set autowriteall | ||||
| 			syntax on | ||||
| 	set list lcs=tab:\|\  | ||||
| 	filetype plugin on | ||||
| 
 | ||||
| 	set termguicolors | ||||
| 	let ayucolor="dark" | ||||
| 	colorscheme ayu | ||||
| 
 | ||||
| 	" window | ||||
| 	nmap <leader>wh  :topleft  vnew<CR> | ||||
| 	nmap <leader>wl :botright vnew<CR> | ||||
| 	nmap <leader>wk    :topleft  new<CR> | ||||
| 	nmap <leader>wj  :botright new<CR> | ||||
| 
 | ||||
| 			let mapleader = "\<Space>" | ||||
| 
 | ||||
| 			" lightline colorscheme | ||||
| 			let g:lightline = { | ||||
| 						\ 'colorscheme': 'seoul256', | ||||
| 						\ } | ||||
| 
 | ||||
| 			" moving splits with vim movements. | ||||
| 			:tnoremap <A-h> <C-\><C-N><C-w>h | ||||
| 			:tnoremap <A-j> <C-\><C-N><C-w>j | ||||
| 			:tnoremap <A-k> <C-\><C-N><C-w>k | ||||
| 			:tnoremap <A-l> <C-\><C-N><C-w>l | ||||
| 			:inoremap <A-h> <C-\><C-N><C-w>h | ||||
| 			:inoremap <A-j> <C-\><C-N><C-w>j | ||||
| 			:inoremap <A-k> <C-\><C-N><C-w>k | ||||
| 			:inoremap <A-l> <C-\><C-N><C-w>l | ||||
| 			:nnoremap <A-h> <leader>h | ||||
| 			:nnoremap <A-j> <leader>j | ||||
| 			:nnoremap <A-k> <leader>k | ||||
| 			:nnoremap <A-l> <leader>l | ||||
| 			:nnoremap <F5> "=strftime("%Y-%m-%d %H:%M:") | ||||
| 			:inoremap <F5> <C-R>=strftime("%Y-%m-%d %H:%M:") | ||||
| 
 | ||||
|       " exit normal mode in terminal | ||||
|       :tnoremap <C-n> <C-\><C-n> | ||||
| 
 | ||||
| 			let g:syntastic_always_populate_loc_list = 1 | ||||
| 			let g:syntastic_auto_loc_list = 1 | ||||
| 			let g:syntastic_check_on_open = 1 | ||||
| 			let g:syntastic_check_on_wq = 0 | ||||
| 
 | ||||
|       let g:rainbow_active = 0 | ||||
|       autocmd BufReadPost,BufNewFile c,py,nix RainbowParenthesesToggleAll | ||||
| 
 | ||||
| 			" keyboard commands | ||||
| 			map <leader>t :NERDTreeToggle<CR> | ||||
| 			map <leader>s :w<CR> | ||||
| 			map <leader>q :wq<CR> | ||||
|       map <leader>r :RainbowParenthesesToggleAll<CR> | ||||
|       map <leader>zs :ZettelSearch<CR> | ||||
|       map <leader>zo :ZettelOpen<CR> | ||||
|       map <leader>zn :ZettelNew<CR> | ||||
| 
 | ||||
| 
 | ||||
| 			" NERDTree  | ||||
| 			" open on directory | ||||
| 			autocmd StdinReadPre * let s:std_in=1 | ||||
| 
 | ||||
| 			" coc | ||||
| 			" | ||||
| 			" if hidden is not set, TextEdit might fail. | ||||
| 			set hidden | ||||
| 
 | ||||
| 			" Some servers have issues with backup files, see #649 | ||||
| 			set nobackup | ||||
| 			set nowritebackup | ||||
| 
 | ||||
| 			" Better display for messages | ||||
| 			set cmdheight=2 | ||||
| 
 | ||||
| 			" You will have bad experience for diagnostic messages when it's default 4000. | ||||
| 			set updatetime=300 | ||||
| 
 | ||||
| 			" don't give |ins-completion-menu| messages. | ||||
| 			set shortmess+=c | ||||
| 
 | ||||
| 			" always show signcolumns | ||||
| 			set signcolumn=yes | ||||
| 
 | ||||
| 			" Use tab for trigger completion with characters ahead and navigate. | ||||
| 			" Use command ':verbose imap <tab>' to make sure tab is not mapped by other plugin. | ||||
| 			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. | ||||
| 			inoremap <silent><expr> <c-space> coc#refresh() | ||||
| 
 | ||||
| 			" Use <cr> to confirm completion, `<C-g>u` means break undo chain at current position. | ||||
| 			" Coc only does snippet and additional edit on confirm. | ||||
| 			inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" | ||||
| 			" Or use `complete_info` if your vim support it, like: | ||||
| 			" inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>" | ||||
| 
 | ||||
| 			" Use `[g` and `]g` to navigate diagnostics | ||||
| 			nmap <silent> [g <Plug>(coc-diagnostic-prev) | ||||
| 			nmap <silent> ]g <Plug>(coc-diagnostic-next) | ||||
| 
 | ||||
| 			" Remap keys for gotos | ||||
| 			nmap <silent> gd <Plug>(coc-definition) | ||||
| 			nmap <silent> gy <Plug>(coc-type-definition) | ||||
| 			nmap <silent> gi <Plug>(coc-implementation) | ||||
| 			nmap <silent> gr <Plug>(coc-references) | ||||
| 
 | ||||
| 			" Use K to show documentation in preview window | ||||
| 			nnoremap <silent> K :call <SID>show_documentation()<CR> | ||||
| 
 | ||||
| 			function! s:show_documentation() | ||||
| 				if (index(['vim','help'], &filetype) >= 0) | ||||
| 					execute 'h '.expand('<cword>') | ||||
| 				else | ||||
| 					call CocAction('doHover') | ||||
| 				endif | ||||
| 			endfunction | ||||
| 
 | ||||
| 			" Highlight symbol under cursor on CursorHold | ||||
| 			autocmd CursorHold * silent call CocActionAsync('highlight') | ||||
| 
 | ||||
| 			" Remap for rename current word | ||||
| 			nmap <leader>rn <Plug>(coc-rename) | ||||
| 
 | ||||
| 			" Remap for format selected region | ||||
| 			xmap <leader>f  <Plug>(coc-format-selected) | ||||
| 			nmap <leader>f  <Plug>(coc-format-selected) | ||||
| 
 | ||||
| 			augroup mygroup | ||||
| 				autocmd! | ||||
| 				" Setup formatexpr specified filetype(s). | ||||
| 				autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') | ||||
| 				" Update signature help on jump placeholder | ||||
| 				autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') | ||||
| 			augroup end | ||||
| 
 | ||||
| 			" Remap for do codeAction of selected region, ex: `<leader>aap` for current paragraph | ||||
| 			xmap <leader>a  <Plug>(coc-codeaction-selected) | ||||
| 			nmap <leader>a  <Plug>(coc-codeaction-selected) | ||||
| 
 | ||||
| 			" Remap for do codeAction of current line | ||||
| 			nmap <leader>ac  <Plug>(coc-codeaction) | ||||
| 			" Fix autofix problem of current line | ||||
| 			nmap <leader>qf  <Plug>(coc-fix-current) | ||||
| 
 | ||||
| 			" Create mappings for function text object, requires document symbols feature of languageserver. | ||||
| 			xmap if <Plug>(coc-funcobj-i) | ||||
| 			xmap af <Plug>(coc-funcobj-a) | ||||
| 			omap if <Plug>(coc-funcobj-i) | ||||
| 			omap af <Plug>(coc-funcobj-a) | ||||
| 
 | ||||
| 			" Use <C-d> for select selections ranges, needs server support, like: coc-tsserver, coc-python | ||||
| 			nmap <silent> <C-d> <Plug>(coc-range-select) | ||||
| 			xmap <silent> <C-d> <Plug>(coc-range-select) | ||||
| 
 | ||||
| 			" Use `:Format` to format current buffer | ||||
| 			command! -nargs=0 Format :call CocAction('format') | ||||
| 
 | ||||
| 			" Use `:Fold` to fold current buffer | ||||
| 			command! -nargs=? Fold :call     CocAction('fold', <f-args>) | ||||
| 
 | ||||
| 			" use `:OR` for organize import of current buffer | ||||
| 			command! -nargs=0 OR   :call     CocAction('runCommand', 'editor.action.organizeImport') | ||||
| 
 | ||||
| 			" Add status line support, for integration with other plugin, checkout `:h coc-status` | ||||
| 			" set statusline^=%{coc#status()}%{get(b:,'coc_current_function',"")} | ||||
| 
 | ||||
| 			" Using CocList | ||||
| 			" Show all diagnostics | ||||
| 			nnoremap <silent> <space>a  :<C-u>CocList diagnostics<cr> | ||||
| 			" Manage extensions | ||||
| 			nnoremap <silent> <space>e  :<C-u>CocList extensions<cr> | ||||
| 			" Show commands | ||||
| 			nnoremap <silent> <space>c  :<C-u>CocList commands<cr> | ||||
| 			" Find symbol of current document | ||||
| 			nnoremap <silent> <space>o  :<C-u>CocList outline<cr> | ||||
| 			" Search workspace symbols | ||||
| 			nnoremap <silent> <space>s  :<C-u>CocList -I symbols<cr> | ||||
| 			" Do default action for next item. | ||||
| 			nnoremap <silent> <space>j  :<C-u>CocNext<CR> | ||||
| 			" Do default action for previous item. | ||||
| 			nnoremap <silent> <space>k  :<C-u>CocPrev<CR> | ||||
| 			" Resume latest coc list | ||||
| 			nnoremap <silent> <space>p  :<C-u>CocListResume<CR> | ||||
| 
 | ||||
| 			au BufNewFile,BufRead *.frag,*.vert,*.fp,*.vp,*.glsl setf glsl | ||||
| 				''; | ||||
| 			}; | ||||
| 		} | ||||
| 	)]; | ||||
| } | ||||
		Loading…
	
		Reference in a new issue