@ -4,8 +4,8 @@ let
 
		
	
		
			
				  secrets  =  import  ./secrets.nix ; 
 
		
	
		
			
				in  
		
	
		
			
				  { 
 
		
	
		
			
				    home . packages  =  with  pkgs ;  [  #  deno 
 
		
	
		
			
				    ripgrep  fd  wget  nodejs  yarn  cargo  mosh  w3m  nnn  urlview  gnupg  hexyl  httpie  cacert  catimg  tealdeer  du-dust  duplicati  bitwarden-cli  rage  sd  bottom magic-wormhole   eva glow  restic  tig  gitui  pastel  spotify-tui manix  weechat  amfora ghc  ocaml 
 
		
	
		
			
				    home . packages  =  with  pkgs ;  [  #  pastel magic-wormhole 
 
		
	
		
			
				    ripgrep  fd  wget  nodejs  yarn  cargo  mosh  w3m  nnn  urlview  gnupg  hexyl  httpie  cacert  catimg  tealdeer  du-dust  duplicati  bitwarden-cli  rage  sd  glow  restic  tig  gitui  manix  ghc  ocaml  weechat  deno  duf  procs  
 
		
	
		
			
				    ispell  aspell  aspellDicts . en  aspellDicts . en-computers  aspellDicts . en-science  aspellDicts . fr  aspellDicts . de  aspellDicts . eo  aspellDicts . es 
 
		
	
		
			
				] ;  
		
	
		
			
				
 
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
			
			@ -59,6 +59,11 @@ in
 
		
	
		
			
				    enableZshIntegration  =  true ; 
 
		
	
		
			
				  } ; 
 
		
	
		
			
				
 
		
	
		
			
				  # programs.atuin = { 
 
		
	
		
			
				  #   enable = true; 
 
		
	
		
			
				  #   enableZshIntegration = true; 
 
		
	
		
			
				  # }; 
 
		
	
		
			
				
 
		
	
		
			
				  programs . zsh  =  { 
 
		
	
		
			
				    enable  =  true ; 
 
		
	
		
			
				    enableAutosuggestions  =  true ; 
 
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
			
			@ -145,8 +150,17 @@ in
 
		
	
		
			
				    vimdiffAlias  =  true ; 
 
		
	
		
			
				    withNodeJs  =  true ; 
 
		
	
		
			
				    withPython3  =  true ; 
 
		
	
		
			
				    plugins  =  with  pkgs . vimPlugins ;  [ 
 
		
	
		
			
				      vim-repeat  ale  vim-snippets  vim-signify  vim-orgmode  vim-devicons  vim-startify  vim-highlightedyank 
 
		
	
		
			
				    coc  =  { 
 
		
	
		
			
				      enable  =  true ; 
 
		
	
		
			
				      settings  =  '' 
 
		
	
		
			
				        { 
 
		
	
		
			
				          " t s s e r v e r . f o r m a t O n T y p e " :  true , 
 
		
	
		
			
				          " c o c . p r e f e r e n c e s . f o r m a t O n T y p e " :  true 
 
		
	
		
			
				        } 
 
		
	
		
			
				      '' ; 
 
		
	
		
			
				    } ; 
 
		
	
		
			
				    plugins  =  with  pkgs . vimPlugins ;  [  # ale 
 
		
	
		
			
				      vim-repeat  vim-snippets  vim-signify  vim-orgmode  vim-devicons  vim-startify  vim-highlightedyank 
 
		
	
		
			
				      emmet-vim  # <ctrl-y>, 
 
		
	
		
			
				      vim-signature  # marks in the gutter; mx (add), dmx (delete), m, (place next available), m. (next available if empty), m- (delete all on line), m<space> (delete all) 
 
		
	
		
			
				      vim-expand-region  # + / - to select increasingly larger / smaller regions∑ 
 
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
			
			@ -158,7 +172,7 @@ in
 
		
	
		
			
				      splitjoin-vim  # gS / gJ to turn single-line code into multi, etc. 
 
		
	
		
			
				      MatchTagAlways  # highlights the matching & surrounding tags 
 
		
	
		
			
				      vim-visual-multi  # ctrl-n on word, n/N to select next/prev, [/] to switch cursors, q to skip, Q to remove current 
 
		
	
		
			
				      vim-endwise  
 
		
	
		
			
				      # vim-endwise  
 
		
	
		
			
				      vim-fugitive  # Git, Gdiff, Gblame, Gstatus, Gcommit 
 
		
	
		
			
				      vim-speeddating  # ctrl-a & ctrl-x on dates 
 
		
	
		
			
				      jdaddy-vim  # cij: change inner json. gqaj: pretty print json 
 
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
			
			@ -170,7 +184,14 @@ in
 
		
	
		
			
				      tabular  # :Tabularize /, :Tabu (shortcut & guess the right thing) 
 
		
	
		
			
				      vim-markdown  # zr, zR, zm, zM, za, zA, zc, zC for folding 
 
		
	
		
			
				      vim-gnupg 
 
		
	
		
			
				      vim-floaterm  # <leader>T 
 
		
	
		
			
				      undotree  # <leader>u 
 
		
	
		
			
				      vim-which-key 
 
		
	
		
			
				      coc-nvim  coc-css  coc-html  coc-eslint  coc-tsserver  coc-json  coc-fzf  coc-snippets 
 
		
	
		
			
				      { 
 
		
	
		
			
				        plugin  =  chadtree ;  # nvim-tree-lua 
 
		
	
		
			
				        config  =  " l e t   g : c h a d t r e e _ s e t t i n g s   =   {   ' x d g ' :   v : t r u e   } " ; 
 
		
	
		
			
				      } 
 
		
	
		
			
				      { 
 
		
	
		
			
				        plugin  =  vim-easy-align ;  # gaip= -> align inner paragraph on first =, gaip*= -> align aroud all = 
 
		
	
		
			
				        config  =  '' 
 
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
			
			@ -186,14 +207,6 @@ in
 
		
	
		
			
				        plugin  =  nerdcommenter ;  # toggle: <leader>c<space>, comment: <leader>cc 
 
		
	
		
			
				        config  =  " l e t   g : N E R D S p a c e D e l i m s   =   1 " ; 
 
		
	
		
			
				      } 
 
		
	
		
			
				      { 
 
		
	
		
			
				        plugin  =  vim-floaterm ; 
 
		
	
		
			
				        config  =  " n n o r e m a p   < s i l e n t >   < l e a d e r > T   : F l o a t e r m N e w < C R > " ; 
 
		
	
		
			
				      } 
 
		
	
		
			
				      { 
 
		
	
		
			
				        plugin  =  vim-which-key ; 
 
		
	
		
			
				        config  =  " n n o r e m a p   < s i l e n t >   < l e a d e r >   : W h i c h K e y   ' < S p a c e > ' < C R > " ; 
 
		
	
		
			
				      } 
 
		
	
		
			
				      { 
 
		
	
		
			
				        plugin  =  vim-airline ; 
 
		
	
		
			
				        config  =  '' 
 
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
			
			@ -211,10 +224,6 @@ in
 
		
	
		
			
				          let  g:nord_underline  =  1 
 
		
	
		
			
				        '' ; 
 
		
	
		
			
				      } 
 
		
	
		
			
				      { 
 
		
	
		
			
				        plugin  =  undotree ; 
 
		
	
		
			
				        config  =  " n n o r e m a p   < l e a d e r > u   : U n d o t r e e T o g g l e < c r > " ; 
 
		
	
		
			
				      } 
 
		
	
		
			
				    ] ; 
 
		
	
		
			
				    extraConfig  =  '' 
 
		
	
		
			
				      "   s e t   e x p a n d t a b   "  insert  spaces  when  tab  is  pressed 
 
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
			
			@ -232,11 +241,52 @@ in
 
		
	
		
			
				      let  mapleader = " \< S p a c e > " 
 
		
	
		
			
				      let  maplocalleader = " \\ " 
 
		
	
		
			
				
 
		
	
		
			
				      let  g:coc_snippet_next  =  ' <tab> ' 
 
		
	
		
			
				      let  g:coc_snippet_prev  =  ' <S-Tab> ' 
 
		
	
		
			
				
 
		
	
		
			
				      let  g:org_indent  =  1 
 
		
	
		
			
				
 
		
	
		
			
				      nnoremap  <silent>  <leader>  : WhichKey  ' <Space> ' <CR> 
 
		
	
		
			
				      nnoremap  <silent>  <leader> t  : CHADopen <CR> 
 
		
	
		
			
				      nnoremap  <silent>  <leader> T  : FloatermNew <CR> 
 
		
	
		
			
				      nnoremap  <silent>  <leader> u  : UndotreeToggle <cr> 
 
		
	
		
			
				
 
		
	
		
			
				      "   l e t   g : c o c _ s n i p p e t _ n e x t   =   ' < t a b > ' 
 
		
	
		
			
				      "   l e t   g : c o c _ s n i p p e t _ p r e v   =   ' < S - T a b > ' 
 
		
	
		
			
				
 
		
	
		
			
				      "   C o C 
 
		
	
		
			
				      "   U s e   t a b   f o r   t r i g g e r   c o m p l e t i o n   w i t h   c h a r a c t e r s   a h e a d   a n d   n a v i g a t e . 
 
		
	
		
			
				      inoremap  <silent> <expr>  <TAB>  pumvisible ( )  ?  " \< C - n > "  :  <SID> check_back_space ( )  ?  " \< T A B > "  :  coc #refresh() 
 
		
	
		
			
				      inoremap  <expr> <S-TAB>  pumvisible ( )  ?  " \< C - p > "  :  " \< C - h > " 
 
		
	
		
			
				
 
		
	
		
			
				      "   M a k e   < C R >   a u t o - s e l e c t   t h e   f i r s t   c o m p l e t i o n   i t e m   a n d   n o t i f y   c o c . n v i m   t o 
 
		
	
		
			
				      "   f o r m a t   o n   e n t e r ,   < c r >   c o u l d   b e   r e m a p p e d   b y   o t h e r   v i m   p l u g i n 
 
		
	
		
			
				      inoremap  <silent> <expr>  <CR>  pumvisible ( )  ?  coc #_select_confirm() : "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>" 
 
		
	
		
			
				
 
		
	
		
			
				      function !  s:check_back_space ( )  abort 
 
		
	
		
			
				        let  col  =  col ( ' . ' )  -  1 
 
		
	
		
			
				        return  ! col  ||  getline ( ' . ' ) [ col  -  1 ]   = ~ # '\s' 
 
		
	
		
			
				      endfunction 
 
		
	
		
			
				
 
		
	
		
			
				      "   G o T o   c o d e   n a v i g a t i o n . 
 
		
	
		
			
				      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 ) 
 
		
	
		
			
				
 
		
	
		
			
				      "   U s e   K   t o   s h o w   d o c u m e n t a t i o n   i n   p r e v i e w   w i n d o w . 
 
		
	
		
			
				      nnoremap  <silent>  K  : call  <SID> show_documentation ( ) <CR> 
 
		
	
		
			
				
 
		
	
		
			
				      function !  s:show_documentation ( ) 
 
		
	
		
			
				        if  ( index ( [ ' vim' , ' help' ] ,  & filetype )  >=  0 ) 
 
		
	
		
			
				          execute  ' h  ' . expand ( ' <cword> ' ) 
 
		
	
		
			
				        elseif  ( coc #rpc#ready()) 
 
		
	
		
			
				          call  CocActionAsync ( ' doHover' ) 
 
		
	
		
			
				        else 
 
		
	
		
			
				          execute  ' ! '  .  & keywordprg  .  "   "  .  expand ( ' <cword> ' ) 
 
		
	
		
			
				        endif 
 
		
	
		
			
				      endfunction 
 
		
	
		
			
				
 
		
	
		
			
				      "   H i g h l i g h t   t h e   s y m b o l   a n d   i t s   r e f e r e n c e s   w h e n   h o l d i n g   t h e   c u r s o r . 
 
		
	
		
			
				      autocmd  CursorHold  *  silent  call  CocActionAsync ( ' highlight' ) 
 
		
	
		
			
				
 
		
	
		
			
				      nnoremap  <silent> <leader> /  : noh <cr> 
 
		
	
		
			
				      nnoremap  <leader> v  <c-w> v <c-w> l 
 
		
	
		
			
				      nnoremap  <leader> s  <c-w> s <c-w> j 
 
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
			
			@ -276,6 +326,7 @@ in
 
		
	
		
			
				  programs . mpv . enable  =  true ; 
 
		
	
		
			
				  programs . jq . enable  =  true ; 
 
		
	
		
			
				  programs . noti . enable  =  true ; 
 
		
	
		
			
				  programs . bottom . enable  =  true ; 
 
		
	
		
			
				
 
		
	
		
			
				  programs . keychain  =  { 
 
		
	
		
			
				    enable  =  true ; 
 
		
	
	
		
			
				
					
						
						
						
							
								 
						
					 
				
			
			@ -287,11 +338,18 @@ in
 
		
	
		
			
				
 
		
	
		
			
				  programs . newsboat  =  { 
 
		
	
		
			
				    enable  =  true ; 
 
		
	
		
			
				    # extraConfig = '' 
 
		
	
		
			
				    #   urls-source "ttrss" 
 
		
	
		
			
				    #   ttrss-url "https://tt-rss.dustinswan.com/" 
 
		
	
		
			
				    #   ttrss-login "dustinswan" 
 
		
	
		
			
				    #   ttrss-passwordeval "gpg -dq ~/.dustinswan@tt-rss.dustinswan.com.gpg" 
 
		
	
		
			
				    # ''; 
 
		
	
		
			
				    extraConfig  =  '' 
 
		
	
		
			
				      urls-source  " t t r s s " 
 
		
	
		
			
				      ttrss-url  " h t t p s : / / t t - r s s . d u s t i n s w a n . c o m / " 
 
		
	
		
			
				      ttrss-login  " d u s t i n s w a n " 
 
		
	
		
			
				      ttrss-passwordeval  " g p g   - d q   ~ / . d u s t i n s w a n @ t t - r s s . d u s t i n s w a n . c o m . g p g " 
 
		
	
		
			
				      urls-source  " i n o r e a d e r " 
 
		
	
		
			
				      inoreader-app-id  " 9 9 9 9 9 7 6 0 2 " 
 
		
	
		
			
				      inoreader-app-key  " I N S E R T _ K E Y _ H E R E " 
 
		
	
		
			
				      inoreader-login  " d u s t i n @ d u s t i n s w a n . c o m " 
 
		
	
		
			
				      inoreader-passwordeval  " g p g   - - d e c r y p t   ~ / . i n o r e a d e r - p a s s w o r d . g p g " 
 
		
	
		
			
				    '' ; 
 
		
	
		
			
				  } ; 
 
		
	
		
			
				}