@ -5,7 +5,7 @@ let
in
in
{
{
home . packages = with pkgs ; [
home . packages = with pkgs ; [
helix ripgrep fd wget mosh w3m nnn urlview gnupg hexyl httpie catimg tealdeer du-dust duplicati bitwarden-cli rage sd eva glow restic tig gitui spotify-tui manix amfora weechat duf procs pandoc magic-wormhole pastel fx
ripgrep fd wget mosh w3m nnn urlview gnupg hexyl httpie catimg tealdeer du-dust duplicati bitwarden-cli rage sd eva glow restic tig gitui spotify-tui manix amfora weechat duf procs pandoc magic-wormhole pastel fx
nodejs deno yarn nodePackages . stylelint nodePackages . js-beautify
nodejs deno yarn nodePackages . stylelint nodePackages . js-beautify
ocaml dune_2 ocamlPackages . utop ocamlPackages . ocp-indent ocamlPackages . merlin
ocaml dune_2 ocamlPackages . utop ocamlPackages . ocp-indent ocamlPackages . merlin
# racket-minimal
# racket-minimal
@ -41,7 +41,7 @@ in
fzf-tmux-url # prefix u -> fzf urls
fzf-tmux-url # prefix u -> fzf urls
yank # prefix y -> copy command line to clipboard; prefix Y -> copy pwd to clipboard; search + y -> copy to clipboard
yank # prefix y -> copy command line to clipboard; prefix Y -> copy pwd to clipboard; search + y -> copy to clipboard
open # highlight: o -> open; ctrl-o -> $EDITOR; S -> web search
open # highlight: o -> open; ctrl-o -> $EDITOR; S -> web search
vim-tmux-navigator # ctrl-h, -j, -k, -l -> move between tmux and vim splits
# vim-tmux-navigator # ctrl-h, -j, -k, -l -> move between tmux and vim splits # TODO doesn't work with helix
copycat # prefix ctrl-/ -> regex search; ctrl-f -> file search; ctrl-u -> url search; etc.
copycat # prefix ctrl-/ -> regex search; ctrl-f -> file search; ctrl-u -> url search; etc.
] ;
] ;
extraConfig = ''
extraConfig = ''
@ -79,7 +79,6 @@ in
h = " h i m a l a y a " ;
h = " h i m a l a y a " ;
er = " r m - r f l o g s ; u n z i p - o " ;
er = " r m - r f l o g s ; u n z i p - o " ;
srsync = " r s y n c - - r s y n c - p a t h = ' s u d o r s y n c ' " ;
srsync = " r s y n c - - r s y n c - p a t h = ' s u d o r s y n c ' " ;
vim = " e c h o N O " ;
} ;
} ;
} ;
} ;
@ -153,172 +152,184 @@ in
package = ( ( pkgs . emacsPackagesNgGen pkgs . emacs ) . emacsWithPackages ( epkgs : [ epkgs . vterm ] ) ) ;
package = ( ( pkgs . emacsPackagesNgGen pkgs . emacs ) . emacsWithPackages ( epkgs : [ epkgs . vterm ] ) ) ;
} ;
} ;
# programs.neovim = {
programs . helix = {
# enable = true;
enable = true ;
# viAlias = true;
settings = {
# vimAlias = true;
theme = " n o r d " ;
# vimdiffAlias = true;
lsp . display-messages = true ;
# withNodeJs = true;
keys . normal = {
# withPython3 = true;
C-h = " j u m p _ v i e w _ l e f t " ;
# coc = {
C-l = " j u m p _ v i e w _ r i g h t " ;
# enable = true;
} ;
# settings = ''
} ;
# {
} ;
# "tsserver.formatOnType": true,
# "coc.preferences.formatOnType": true
programs . neovim = {
# }
enable = true ;
# '';
viAlias = true ;
# };
vimAlias = true ;
# plugins = with pkgs.vimPlugins; [ # ale
vimdiffAlias = true ;
# vim-repeat vim-snippets vim-signify vim-orgmode vim-devicons vim-startify vim-highlightedyank
withNodeJs = true ;
# emmet-vim # <ctrl-y>,
withPython3 = true ;
# 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)
coc = {
# vim-expand-region # + / - to select increasingly larger / smaller regions∑
enable = true ;
# vim-better-whitespace # :StripWhitespace
settings = ''
# vim-peekaboo # see registers when doing " @ and ctrl-r
{
# vim-abolish # Substitution: :Subvert/child{,ren}/adult{,s}/g Coercios: crs (coerce to snake-case), crm (mixed), crc (camel), cru (upper), cr- (dash), cr., cr<space>, crt (title-case)
" t s s e r v e r . f o r m a t O n T y p e " : true ,
# vim-polyglot # includes sensible, dups vim-sleuth
" 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
# argtextobj-vim # daa => delete an argument
}
# 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
plugins = with pkgs . vimPlugins ; [ # ale
# # vim-endwise # automatically add end block keyword or symbol
vim-repeat vim-snippets vim-signify vim-orgmode vim-devicons vim-startify vim-highlightedyank
# vim-fugitive # Git, Gdiff, Gblame, Gstatus, Gcommit
emmet-vim # <ctrl-y>,
# vim-speeddating # ctrl-a & ctrl-x on dates
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)
# jdaddy-vim # cij: change inner json. gqaj: pretty print json
vim-expand-region # + / - to select increasingly larger / smaller regions∑
# vim-surround # cs[{ -> change surrounding [ to {, cst -> change surrounding tag, ysiw] -> surround inner word with ], etc.
vim-better-whitespace # :StripWhitespace
# vim-tmux-navigator # ctrl-l -> right in vim splits then tmux panes, etc.
vim-peekaboo # see registers when doing " @ and ctrl-r
# vim-sneak # stp -> jump to next occurance of 'tp'. ; -> next. , -> go back, `` -> back home
vim-abolish # Substitution: :Subvert/child{,ren}/adult{,s}/g Coercios: crs (coerce to snake-case), crm (mixed), crc (camel), cru (upper), cr- (dash), cr., cr<space>, crt (title-case)
# fzf-vim
vim-polyglot # includes sensible, dups vim-sleuth
# vim-table-mode # <space>tm, || for rule, <space>tt -> tableize csv
argtextobj-vim # daa => delete an argument
# tabular # :Tabularize /, :Tabu (shortcut & guess the right thing)
splitjoin-vim # gS / gJ to turn single-line code into multi, etc.
# vim-markdown # zr, zR, zm, zM, za, zA, zc, zC for folding
MatchTagAlways # highlights the matching & surrounding tags
# vim-gnupg
vim-visual-multi # ctrl-n on word, n/N to select next/prev, [/] to switch cursors, q to skip, Q to remove current
# vim-floaterm # <leader>T
# vim-endwise # automatically add end block keyword or symbol
# undotree # <leader>u
vim-fugitive # Git, Gdiff, Gblame, Gstatus, Gcommit
# vim-which-key
vim-speeddating # ctrl-a & ctrl-x on dates
# coc-nvim coc-css coc-html coc-eslint coc-tsserver coc-json coc-fzf coc-snippets
jdaddy-vim # cij: change inner json. gqaj: pretty print json
# {
vim-surround # cs[{ -> change surrounding [ to {, cst -> change surrounding tag, ysiw] -> surround inner word with ], etc.
# plugin = chadtree; # nvim-tree-lua
vim-tmux-navigator # ctrl-l -> right in vim splits then tmux panes, etc.
# config = "let g:chadtree_settings = { 'xdg': v:true }";
vim-sneak # stp -> jump to next occurance of 'tp'. ; -> next. , -> go back, `` -> back home
# }
fzf-vim
# {
vim-table-mode # <space>tm, || for rule, <space>tt -> tableize csv
# plugin = vim-easy-align; # gaip= -> align inner paragraph on first =, gaip*= -> align aroud all =
tabular # :Tabularize /, :Tabu (shortcut & guess the right thing)
# config = ''
vim-markdown # zr, zR, zm, zM, za, zA, zc, zC for folding
# xmap ga <Plug>(EasyAlign)
vim-gnupg
# nmap ga <Plug>(EasyAlign)
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 = vim-easymotion; # <leader><leader> w, <leader><leader>fx -> find x
{
# config = "let g:EasyMotion_smartcase = 1";
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 = nerdcommenter; # toggle: <leader>c<space>, comment: <leader>cc
{
# config = "let g:NERDSpaceDelims = 1";
plugin = vim-easy-align ; # gaip= -> align inner paragraph on first =, gaip*= -> align aroud all =
# }
config = ''
# {
xmap ga <Plug> ( EasyAlign )
# plugin = vim-airline;
nmap ga <Plug> ( EasyAlign )
# config = ''
'' ;
# let g:airline#extensions#tabline#enabled = 1
}
# let g:airline#extensions#ale#enabled = 1
{
# let g:airline_powerline_fonts = 1
plugin = vim-easymotion ; # <leader><leader> w, <leader><leader>fx -> find x
# '';
config = " l e t g : E a s y M o t i o n _ s m a r t c a s e = 1 " ;
# }
}
# vim-airline-themes
{
# {
plugin = nerdcommenter ; # toggle: <leader>c<space>, comment: <leader>cc
# plugin = nord-vim;
config = " l e t g : N E R D S p a c e D e l i m s = 1 " ;
# config = ''
}
# colorscheme nord
{
# let g:nord_italic = 1
plugin = vim-airline ;
# let g:nord_underline = 1
config = ''
# '';
let g:airline #extensions#tabline#enabled = 1
# }
let g:airline #extensions#ale#enabled = 1
# ];
let g:airline_powerline_fonts = 1
# extraConfig = ''
'' ;
# set hidden
}
# set number
vim-airline-themes
# set ignorecase
{
# set smartcase
plugin = nord-vim ;
# set magic
config = ''
# set mouse=a
colorscheme nord
let g:nord_italic = 1
# let mapleader="\<Space>"
let g:nord_underline = 1
# let maplocalleader="\\"
'' ;
}
# let g:org_indent = 1
] ;
extraConfig = ''
# nnoremap <silent> <leader> :WhichKey '<Space>'<CR>
set hidden
# nnoremap <silent> <leader>t :CHADopen<CR>
set number
# nnoremap <silent> <leader>T :FloatermNew<CR>
set ignorecase
# nnoremap <silent> <leader>u :UndotreeToggle<cr>
set smartcase
set magic
# " let g:coc_snippet_next = '<tab>'
set mouse = a
# " let g:coc_snippet_prev = '<S-Tab>'
let mapleader = " \< S p a c e > "
# " CoC
let maplocalleader = " \\ "
# " Use tab for trigger completion with characters ahead and navigate.
# inoremap <silent><expr> <TAB> pumvisible() ? "\<C-n>" : <SID>check_back_space() ? "\<TAB>" : coc#refresh()
let g:org_indent = 1
# inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
nnoremap <silent> <leader> : WhichKey ' <Space> ' <CR>
# " Make <CR> auto-select the first completion item and notify coc.nvim to
nnoremap <silent> <leader> t : CHADopen <CR>
# " format on enter, <cr> could be remapped by other vim plugin
nnoremap <silent> <leader> T : FloatermNew <CR>
# inoremap <silent><expr> <CR> pumvisible() ? coc#_select_confirm() : "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
nnoremap <silent> <leader> u : UndotreeToggle <cr>
# function! s:check_back_space() abort
" l e t g : c o c _ s n i p p e t _ n e x t = ' < t a b > '
# let col = col('.') - 1
" l e t g : c o c _ s n i p p e t _ p r e v = ' < S - T a b > '
# return !col || getline('.')[col - 1] =~# '\s'
# endfunction
" 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 .
# " GoTo code navigation.
inoremap <silent> <expr> <TAB> pumvisible ( ) ? " \< C - n > " : <SID> check_back_space ( ) ? " \< T A B > " : coc #refresh()
# nmap <silent> gd <Plug>(coc-definition)
inoremap <expr> <S-TAB> pumvisible ( ) ? " \< C - p > " : " \< C - h > "
# nmap <silent> gy <Plug>(coc-type-definition)
# nmap <silent> gi <Plug>(coc-implementation)
" 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
# nmap <silent> gr <Plug>(coc-references)
" 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>"
# " Use K to show documentation in preview window.
# nnoremap <silent> K :call <SID>show_documentation()<CR>
function ! s:check_back_space ( ) abort
let col = col ( ' . ' ) - 1
# function! s:show_documentation()
return ! col || getline ( ' . ' ) [ col - 1 ] = ~ # '\s'
# if (index(['vim','help'], &filetype) >= 0)
endfunction
# execute 'h '.expand('<cword>')
# elseif (coc#rpc#ready())
" G o T o c o d e n a v i g a t i o n .
# call CocActionAsync('doHover')
nmap <silent> gd <Plug> ( coc-definition )
# else
nmap <silent> gy <Plug> ( coc-type-definition )
# execute '!' . &keywordprg . " " . expand('<cword>')
nmap <silent> gi <Plug> ( coc-implementation )
# endif
nmap <silent> gr <Plug> ( coc-references )
# endfunction
" 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 .
# " Highlight the symbol and its references when holding the cursor.
nnoremap <silent> K : call <SID> show_documentation ( ) <CR>
# autocmd CursorHold * silent call CocActionAsync('highlight')
function ! s:show_documentation ( )
# nnoremap <silent><leader>/ :noh<cr>
if ( index ( [ ' vim' , ' help' ] , & filetype ) >= 0 )
# nnoremap <leader>v <c-w>v<c-w>l
execute ' h ' . expand ( ' <cword> ' )
# nnoremap <leader>s <c-w>s<c-w>j
elseif ( coc #rpc#ready())
call CocActionAsync ( ' doHover' )
# nnoremap <silent> <leader>a :Rg<CR>
else
# nnoremap <silent> <leader>f :Files<CR>
execute ' ! ' . & keywordprg . " " . expand ( ' <cword> ' )
# nnoremap <silent> <leader>b :Buffers<CR>
endif
# nnoremap <silent> <leader>w :Windows<CR>
endfunction
# nnoremap <silent> <leader>C :Commands<CR>
# nnoremap <silent> <leader>hf :History<CR>
" 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 .
# nnoremap <silent> <leader>hc :History:<CR>
autocmd CursorHold * silent call CocActionAsync ( ' highlight' )
# nnoremap <silent> <leader>hs :History/<CR>
# nnoremap <silent> <leader>l :BLines<CR>
nnoremap <silent> <leader> / : noh <cr>
# nnoremap <silent> <leader><leader>l :Lines<CR>
nnoremap <leader> v <c-w> v <c-w> l
# " nnoremap <silent> <leader>t :BTags<CR>
nnoremap <leader> s <c-w> s <c-w> j
# nnoremap <silent> <leader><leader>t :Tags<CR>
# nnoremap <silent> <leader>gc :BCommits<CR>
nnoremap <silent> <leader> a : Rg <CR>
# nnoremap <silent> <leader><leader>gc :Commits<CR>
nnoremap <silent> <leader> f : Files <CR>
# nmap <leader><tab> <plug>(fzf-maps-n)
nnoremap <silent> <leader> b : Buffers <CR>
# xmap <leader><tab> <plug>(fzf-maps-x)
nnoremap <silent> <leader> w : Windows <CR>
# omap <leader><tab> <plug>(fzf-maps-o)
nnoremap <silent> <leader> C : Commands <CR>
# imap <c-x><c-k> <plug>(fzf-complete-word)
nnoremap <silent> <leader> hf : History <CR>
# imap <c-x><c-f> <plug>(fzf-complete-path)
nnoremap <silent> <leader> hc : History : <CR>
# imap <c-x><c-j> <plug>(fzf-complete-file-ag)
nnoremap <silent> <leader> hs : History / <CR>
# imap <c-x><c-l> <plug>(fzf-complete-line)
nnoremap <silent> <leader> l : BLines <CR>
# '';
nnoremap <silent> <leader> <leader> l : Lines <CR>
# };
" n n o r e m a p < s i l e n t > < l e a d e r > t : B T a g s < C R >
nnoremap <silent> <leader> <leader> t : Tags <CR>
nnoremap <silent> <leader> gc : BCommits <CR>
nnoremap <silent> <leader> <leader> gc : Commits <CR>
nmap <leader> <tab> <plug> ( fzf-maps-n )
xmap <leader> <tab> <plug> ( fzf-maps-x )
omap <leader> <tab> <plug> ( fzf-maps-o )
imap <c-x> <c-k> <plug> ( fzf-complete-word )
imap <c-x> <c-f> <plug> ( fzf-complete-path )
imap <c-x> <c-j> <plug> ( fzf-complete-file-ag )
imap <c-x> <c-l> <plug> ( fzf-complete-line )
'' ;
} ;
programs . bat = {
programs . bat = {
enable = true ;
enable = true ;
@ -396,9 +407,4 @@ in
abort_merge : Some ( ( code : Char ( ' M' ) , modifiers : ( bits : 1 , ) , ) ) ,
abort_merge : Some ( ( code : Char ( ' M' ) , modifiers : ( bits : 1 , ) , ) ) ,
) '' ;
) '' ;
} ;
} ;
home . file . helix = {
target = " . c o n f i g / h e l i x / c o n f i g . t o m l " ;
text = " t h e m e = \" n o r d \" " ;
} ;
}
}