@ -4,8 +4,8 @@ let
secrets = import ./secrets.nix ;
secrets = import ./secrets.nix ;
in
in
{
{
home . packages = with pkgs ; [ # deno
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 bottom magic-wormhole eva glow restic tig gitui pastel spotify-tui manix weechat amfora ghc ocaml
ripgrep fd wget nodejs yarn cargo mosh w3m nnn urlview gnupg hexyl httpie cacert catimg tealdeer du-dust duplicati bitwarden-cli rage sd eva glow restic tig gitui spotify-tui manix amfora ghc ocaml weechat deno duf procs
ispell aspell aspellDicts . en aspellDicts . en-computers aspellDicts . en-science aspellDicts . fr aspellDicts . de aspellDicts . eo aspellDicts . es
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 ;
enableZshIntegration = true ;
} ;
} ;
# programs.atuin = {
# enable = true;
# enableZshIntegration = true;
# };
programs . zsh = {
programs . zsh = {
enable = true ;
enable = true ;
enableAutosuggestions = true ;
enableAutosuggestions = true ;
@ -145,8 +150,17 @@ in
vimdiffAlias = true ;
vimdiffAlias = true ;
withNodeJs = true ;
withNodeJs = true ;
withPython3 = true ;
withPython3 = true ;
plugins = with pkgs . vimPlugins ; [
coc = {
vim-repeat ale vim-snippets vim-signify vim-orgmode vim-devicons vim-startify vim-highlightedyank
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>,
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-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∑
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.
splitjoin-vim # gS / gJ to turn single-line code into multi, etc.
MatchTagAlways # highlights the matching & surrounding tags
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-visual-multi # ctrl-n on word, n/N to select next/prev, [/] to switch cursors, q to skip, Q to remove current
vim-endwise # automatically add end block keyword or symbol
# vim-endwise # automatically add end block keyword or symbol
vim-fugitive # Git, Gdiff, Gblame, Gstatus, Gcommit
vim-fugitive # Git, Gdiff, Gblame, Gstatus, Gcommit
vim-speeddating # ctrl-a & ctrl-x on dates
vim-speeddating # ctrl-a & ctrl-x on dates
jdaddy-vim # cij: change inner json. gqaj: pretty print json
jdaddy-vim # cij: change inner json. gqaj: pretty print json
@ -170,7 +184,14 @@ in
tabular # :Tabularize /, :Tabu (shortcut & guess the right thing)
tabular # :Tabularize /, :Tabu (shortcut & guess the right thing)
vim-markdown # zr, zR, zm, zM, za, zA, zc, zC for folding
vim-markdown # zr, zR, zm, zM, za, zA, zc, zC for folding
vim-gnupg
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
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 =
plugin = vim-easy-align ; # gaip= -> align inner paragraph on first =, gaip*= -> align aroud all =
config = ''
config = ''
@ -186,14 +207,6 @@ in
plugin = nerdcommenter ; # toggle: <leader>c<space>, comment: <leader>cc
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 " ;
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 ;
plugin = vim-airline ;
config = ''
config = ''
@ -211,10 +224,6 @@ in
let g:nord_underline = 1
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 = ''
extraConfig = ''
" s e t e x p a n d t a b " insert spaces when tab is pressed
" 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 mapleader = " \< S p a c e > "
let maplocalleader = " \\ "
let maplocalleader = " \\ "
let g:coc_snippet_next = ' <tab> '
let g:coc_snippet_prev = ' <S-Tab> '
let g:org_indent = 1
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 <silent> <leader> / : noh <cr>
nnoremap <leader> v <c-w> v <c-w> l
nnoremap <leader> v <c-w> v <c-w> l
nnoremap <leader> s <c-w> s <c-w> j
nnoremap <leader> s <c-w> s <c-w> j
@ -276,6 +326,7 @@ in
programs . mpv . enable = true ;
programs . mpv . enable = true ;
programs . jq . enable = true ;
programs . jq . enable = true ;
programs . noti . enable = true ;
programs . noti . enable = true ;
programs . bottom . enable = true ;
programs . keychain = {
programs . keychain = {
enable = true ;
enable = true ;
@ -287,11 +338,18 @@ in
programs . newsboat = {
programs . newsboat = {
enable = true ;
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 = ''
extraConfig = ''
urls-source " t t r s s "
urls-source " i n o r e a d e r "
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 / "
inoreader-app-id " 9 9 9 9 9 7 6 0 2 "
ttrss-login " d u s t i n s w a n "
inoreader-app-key " I N S E R T _ K E Y _ H E R E "
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 "
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 "
'' ;
'' ;
} ;
} ;
}
}