From 752141ffe41b3dac58f13e6b0379a9a74e284a23 Mon Sep 17 00:00:00 2001 From: Dustin Swan Date: Sat, 5 Feb 2022 21:21:56 -0500 Subject: [PATCH] LunarVim, doom-nix, lots of cleaning, etc. Not sure I love it --- bin/update | 10 +- home-cli.nix | 287 +++++++++++++++++---------------------------------- 2 files changed, 102 insertions(+), 195 deletions(-) diff --git a/bin/update b/bin/update index 1b3ed01..92fa8ea 100755 --- a/bin/update +++ b/bin/update @@ -12,8 +12,8 @@ if command -v nix &> /dev/null; then home-manager switch fi -if command -v doom &> /dev/null; then - doom sync - doom -y upgrade - doom env -fi +# if command -v doom &> /dev/null; then +# doom sync +# doom -y upgrade +# doom env +# fi diff --git a/home-cli.nix b/home-cli.nix index 3af3854..6769a64 100644 --- a/home-cli.nix +++ b/home-cli.nix @@ -2,19 +2,87 @@ let secrets = import ./secrets.nix; + + doom-emacs = pkgs.callPackage + (builtins.fetchTarball { + url = https://github.com/nix-community/nix-doom-emacs/archive/master.tar.gz; + }) + { + doomPrivateDir = ./doom; + }; in - { - home.packages = with pkgs; [ - 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 - ocaml dune_2 ocamlPackages.utop ocamlPackages.ocp-indent ocamlPackages.merlin +{ + home.packages = with pkgs; [ + ripgrep + fd + wget + mosh + w3m + urlview + gnupg + hexyl + httpie + timg + tealdeer + du-dust + duplicati + bitwarden-cli + rage + sd + eva + glow + restic + gitui + spotify-tui + manix + amfora + weechat + duf + procs + pandoc + magic-wormhole + pastel + jo # jo name=Dustin age=99 -> { name: "dustin", age: 99 } + fx # jo -a one two three | fx ".map(e => e.length > 3)" -> [false, false, true] + bandwhich + nodejs + deno + yarn + nodePackages.typescript-language-server + nodePackages.stylelint + nodePackages.js-beautify + ocaml + dune_2 + ocamlPackages.utop + ocamlPackages.ocp-indent + ocamlPackages.merlin # racket-minimal rustc - ghc cargo haskell-language-server hlint haskellPackages.hoogle # haskellPackages.cabal - nixfmt shellcheck fontconfig cmigemo cacert - emacsPackages.fontawesome emacs-all-the-icons-fonts - ispell aspell aspellDicts.en aspellDicts.en-computers aspellDicts.en-science aspellDicts.fr aspellDicts.de aspellDicts.eo aspellDicts.es -]; + ghc + cargo + go + haskell-language-server + hlint + haskellPackages.hoogle # haskellPackages.cabal + nixfmt + shellcheck + fontconfig + cmigemo + cacert + emacsPackages.fontawesome + emacs-all-the-icons-fonts + ispell + aspell + aspellDicts.en + aspellDicts.en-computers + aspellDicts.en-science + aspellDicts.fr + aspellDicts.de + aspellDicts.eo + aspellDicts.es + doom-emacs + code-minimap + ]; home.sessionVariables = { EDITOR = "hx"; @@ -35,24 +103,21 @@ in secureSocket = false; plugins = with pkgs.tmuxPlugins; [ sensible - continuum - resurrect # prefix ctrl-s -> save; prefix ctrl-r -> restore pain-control # prefix |, -, \, _ to split; prefix h, j, k, l to switch; prefix H, J, K, L to resize; prefix <, > to move 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 open # highlight: o -> open; ctrl-o -> $EDITOR; S -> web search # 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. ]; + # set -g set-titles on + # set -g set-titles-string "#H (#S)" extraConfig = '' - set -g set-titles on - set -g set-titles-string "#H (#S)" - set -g mouse on - set -g status-right "" - set -g status-left "" - set -g status-style fg=white,bg=black - set-window-option -g window-status-format '#[fg=black,bright,nodim]#I #[fg=white,bright,dim]#W ' - set-window-option -g window-status-current-format '#[fg=black,bright,nodim]#I #[fg=white,bright,nodim]#W ' + set -g mouse on + set -g status-right "" + set -g status-left "" + set -g status-style fg=white,bg=black + set-window-option -g window-status-format '#[fg=black,bright,nodim]#I #[fg=white,bright,dim]#W ' + set-window-option -g window-status-current-format '#[fg=black,bright,nodim]#I #[fg=white,bright,nodim]#W ' ''; }; @@ -61,7 +126,8 @@ in enableAliases = true; }; - programs.zoxide = { # z doc -> cd ~/Documents; zi -> interactive + programs.zoxide = { + # z doc -> cd ~/Documents; zi -> interactive enable = true; enableZshIntegration = true; }; @@ -79,6 +145,7 @@ in h = "himalaya"; er = "rm -rf logs; unzip -o"; srsync = "rsync --rsync-path='sudo rsync'"; + vim = "~/.local/bin/lvim"; # trying out LunarVim }; }; @@ -92,7 +159,8 @@ in enableZshIntegration = true; }; - programs.fzf = { # ctrl-t, ctrl-r, ssh ** + programs.fzf = { + # ctrl-t, ctrl-r, ssh ** enable = true; enableZshIntegration = true; defaultCommand = "fd --type file --color=always"; @@ -101,7 +169,8 @@ in fileWidgetOptions = [ "--min-height 30 --preview-window noborder --preview '(bat --style=numbers,changes --wrap never --color always {} || cat {} || tree -C {}) 2> /dev/null'" ]; }; - programs.navi = { # ctrl-G + programs.navi = { + # ctrl-G enable = true; enableZshIntegration = true; }; @@ -136,7 +205,8 @@ in signByDefault = true; key = "AD11750151C10881970BD943AB49BD6B2B3A6377"; }; - aliases = { # https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git + aliases = { + # https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/git lg = "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)<%an>%Creset' --abbrev-commit"; }; delta = { @@ -147,11 +217,6 @@ in }; }; - programs.emacs = { - enable = true; - package = ((pkgs.emacsPackagesNgGen pkgs.emacs).emacsWithPackages (epkgs: [ epkgs.vterm ])); - }; - programs.helix = { enable = true; settings = { @@ -171,164 +236,6 @@ in vimdiffAlias = true; withNodeJs = true; withPython3 = true; - coc = { - enable = true; - settings = '' - { - "tsserver.formatOnType": true, - "coc.preferences.formatOnType": true - } - ''; - }; - plugins = with pkgs.vimPlugins; [ # ale - vim-repeat vim-snippets vim-signify vim-orgmode vim-devicons vim-startify vim-highlightedyank - emmet-vim # , - 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 (delete all) - vim-expand-region # + / - to select increasingly larger / smaller regionsāˆ‘ - vim-better-whitespace # :StripWhitespace - 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, crt (title-case) - vim-polyglot # includes sensible, dups vim-sleuth - 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 - # vim-endwise # automatically add end block keyword or symbol - 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 - vim-surround # cs[{ -> change surrounding [ to {, cst -> change surrounding tag, ysiw] -> surround inner word with ], etc. - vim-tmux-navigator # ctrl-l -> right in vim splits then tmux panes, etc. - vim-sneak # stp -> jump to next occurance of 'tp'. ; -> next. , -> go back, `` -> back home - fzf-vim - vim-table-mode # tm, || for rule, tt -> tableize csv - tabular # :Tabularize /, :Tabu (shortcut & guess the right thing) - vim-markdown # zr, zR, zm, zM, za, zA, zc, zC for folding - vim-gnupg - vim-floaterm # T - undotree # 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 = "let g:chadtree_settings = { 'xdg': v:true }"; - } - { - plugin = vim-easy-align; # gaip= -> align inner paragraph on first =, gaip*= -> align aroud all = - config = '' - xmap ga (EasyAlign) - nmap ga (EasyAlign) - ''; - } - { - plugin = vim-easymotion; # w, fx -> find x - config = "let g:EasyMotion_smartcase = 1"; - } - { - plugin = nerdcommenter; # toggle: c, comment: cc - config = "let g:NERDSpaceDelims = 1"; - } - { - plugin = vim-airline; - config = '' - let g:airline#extensions#tabline#enabled = 1 - let g:airline#extensions#ale#enabled = 1 - let g:airline_powerline_fonts = 1 - ''; - } - vim-airline-themes - { - plugin = nord-vim; - config = '' - colorscheme nord - let g:nord_italic = 1 - let g:nord_underline = 1 - ''; - } - ]; - extraConfig = '' - set hidden - set number - set ignorecase - set smartcase - set magic - set mouse=a - - let mapleader="\" - let maplocalleader="\\" - - let g:org_indent = 1 - - nnoremap :WhichKey '' - nnoremap t :CHADopen - nnoremap T :FloatermNew - nnoremap u :UndotreeToggle - - " let g:coc_snippet_next = '' - " let g:coc_snippet_prev = '' - - " CoC - " Use tab for trigger completion with characters ahead and navigate. - inoremap pumvisible() ? "\" : check_back_space() ? "\" : coc#refresh() - inoremap pumvisible() ? "\" : "\" - - " Make auto-select the first completion item and notify coc.nvim to - " format on enter, could be remapped by other vim plugin - inoremap pumvisible() ? coc#_select_confirm() : "\u\\=coc#on_enter()\" - - function! s:check_back_space() abort - let col = col('.') - 1 - return !col || getline('.')[col - 1] =~# '\s' - endfunction - - " GoTo code navigation. - nmap gd (coc-definition) - nmap gy (coc-type-definition) - nmap gi (coc-implementation) - nmap gr (coc-references) - - " Use K to show documentation in preview window. - nnoremap K :call show_documentation() - - function! s:show_documentation() - if (index(['vim','help'], &filetype) >= 0) - execute 'h '.expand('') - elseif (coc#rpc#ready()) - call CocActionAsync('doHover') - else - execute '!' . &keywordprg . " " . expand('') - endif - endfunction - - " Highlight the symbol and its references when holding the cursor. - autocmd CursorHold * silent call CocActionAsync('highlight') - - nnoremap / :noh - nnoremap v vl - nnoremap s sj - - nnoremap a :Rg - nnoremap f :Files - nnoremap b :Buffers - nnoremap w :Windows - nnoremap C :Commands - nnoremap hf :History - nnoremap hc :History: - nnoremap hs :History/ - nnoremap l :BLines - nnoremap l :Lines - " nnoremap t :BTags - nnoremap t :Tags - nnoremap gc :BCommits - nnoremap gc :Commits - nmap (fzf-maps-n) - xmap (fzf-maps-x) - omap (fzf-maps-o) - imap (fzf-complete-word) - imap (fzf-complete-path) - imap (fzf-complete-file-ag) - imap (fzf-complete-line) - ''; }; programs.bat = { @@ -348,8 +255,8 @@ in enable = true; enableZshIntegration = true; inheritType = "any"; - agents = ["gpg" "ssh"]; - keys = ["id_rsa" "2B3A6377"]; + agents = [ "gpg" "ssh" ]; + keys = [ "id_rsa" "2B3A6377" ]; }; programs.newsboat = {