From c47b2acc8dea2189a5d78ba1c03ffe09435f1f53 Mon Sep 17 00:00:00 2001 From: notgne2 Date: Tue, 9 Nov 2021 14:36:46 -0700 Subject: [PATCH] deprecate pc specific notgne2 home-manager module --- flake.nix | 3 +- home-manager/users/notgne2.nix | 295 +++++++++++++++++++++++++- home-manager/users/notgne2_pc.nix | 332 ------------------------------ 3 files changed, 295 insertions(+), 335 deletions(-) delete mode 100644 home-manager/users/notgne2_pc.nix diff --git a/flake.nix b/flake.nix index b8cd836..a0b2350 100644 --- a/flake.nix +++ b/flake.nix @@ -71,8 +71,7 @@ nixosModules.common-chekkie = import ./users/chekkie.nix; homeManagerModules.common = import ./home-manager/common.nix inputs; - homeManagerModules.common-notgne2 = import ./home-manager/users/notgne2.nix; - homeManagerModules.common-notgne2_pc = import ./home-manager/users/notgne2_pc.nix inputs; + homeManagerModules.common-notgne2 = import ./home-manager/users/notgne2.nix inputs; homeManagerModules.common-glooder = import ./home-manager/users/glooder.nix; homeManagerModules.common-chekkie = import ./home-manager/users/chekkie.nix; }; diff --git a/home-manager/users/notgne2.nix b/home-manager/users/notgne2.nix index 0968db9..1b033d7 100644 --- a/home-manager/users/notgne2.nix +++ b/home-manager/users/notgne2.nix @@ -1,5 +1,24 @@ +inputs: { config, pkgs, lib, ... }: +let + # TODO: find a better source + mimeTypes = pkgs.fetchurl { + url = + "https://raw.githubusercontent.com/eprints/eprints3.4/master/lib/mime.types"; + sha256 = "0cdhq71wk5h3zcfrz8dyqc3vrjyikwjqsla855v036r54lch0kn2"; + }; + + sc = pkgs.writeScript "sc.sh" '' + #!${pkgs.zsh}/bin/zsh + git commit -am "$*" + ''; + + allgm8 = pkgs.writeScript "allgm8.sh" '' + #!${pkgs.zsh}/bin/zsh + for loc in au-02 us-03 us-04 eu-01; do echo "--- $loc: "; ssh "$loc.gm8.app" "$1"; echo "done"; done + ''; +in { programs.home-manager.enable = true; @@ -8,13 +27,285 @@ ncurses.dev lsd fzf # also needed for fzf.vim + xclip # needed for nvim + nixpkgs-fmt + neovim-qt ]; + xdg.configFile."nvim/coc-settings.json".source = pkgs.writeText "coc-settings.json" (builtins.toJSON { + languageserver = { + nix = { + command = "${pkgs.rnix-lsp}/bin/rnix-lsp"; + filetypes = [ "nix" ]; + }; + elmLS = { + command = "${pkgs.elmPackages.elm-language-server}/bin/elm-language-server"; + filetypes = [ "elm" ]; + rootPatterns = [ "elm.json" ]; + }; + }; + codeLens.enable = true; + coc.preferences.formatOnSaveFiletypes = [ "rust" "elm" "javascript" "typescript" "json" ]; + }); + + programs.neovim = { + viAlias = true; + vimAlias = true; + vimdiffAlias = true; + withNodeJs = true; + withPython3 = true; + plugins = with pkgs.vimPlugins; [ + direnv-vim + fugitive + vim-nix + camelcasemotion + vim-indent-object + vim-commentary + vim-surround + { + plugin = vim-airline; + config = '' + if exists('g:started_by_firenvim') + let g:airline#extensions#tabline#enabled = 0 + let g:airline_powerline_fonts = 0 + else + let g:airline#extensions#tabline#enabled = 1 + let g:airline_powerline_fonts = 1 + endif + + " remove c, which contains filename, without firevim it's in the buffer, with firevim I don't want to see it, so this can always be applied + let g:airline#extensions#default#layout = [ + \ [ 'a', 'b' ], + \ [ 'x', 'y', 'z', 'error', 'warning' ] + \ ] + ''; + } + coc-nvim + coc-rust-analyzer + coc-tsserver + vim-visual-multi + { + plugin = fzf-vim; + config = '' + map ; :Files + ''; + } + ( + pkgs.vimUtils.buildVimPlugin { + pname = "firenvim"; + src = inputs.firenvim; + # yes im stupid + version = builtins.readFile (pkgs.runCommandNoCC "firenvim-version" { } '' + ${pkgs.jq}/bin/jq -j .version < ${inputs.firenvim}/package.json > $out + ''); + }) + vim-gitgutter + ]; + extraConfig = '' + set encoding=utf-8 + set hidden + set nobackup + set nowritebackup + set cmdheight=2 + set updatetime=200 + set shortmess+=c + " maybe should be number? + set signcolumn=yes + + set clipboard+=unnamedplus + set mouse=a + + map :bnext + map :bprev + + " Use tab for trigger completion with characters ahead and navigate. + " NOTE: Use command ':verbose imap ' to make sure tab is not mapped by + " other plugin before putting this into your config. + inoremap + \ pumvisible() ? "\" : + \ check_back_space() ? "\" : + \ coc#refresh() + inoremap pumvisible() ? "\" : "\" + + function! s:check_back_space() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' + endfunction + + " Use to trigger completion. + if has('nvim') + inoremap coc#refresh() + else + inoremap coc#refresh() + endif + + " 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()\" + + " Use `[g` and `]g` to navigate diagnostics + " Use `:CocDiagnostics` to get all diagnostics of current buffer in location list. + nmap [g (coc-diagnostic-prev) + nmap ]g (coc-diagnostic-next) + + " 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') + + " Symbol renaming. + nmap rn (coc-rename) + + " Formatting selected code. + xmap f (coc-format-selected) + nmap f (coc-format-selected) + + " Applying codeAction to the selected region. + " Example: `aap` for current paragraph + xmap a (coc-codeaction-selected) + nmap a (coc-codeaction-selected) + + " Remap keys for applying codeAction to the current buffer. + nmap ac (coc-codeaction) + " Apply AutoFix to problem on the current line. + nmap qf (coc-fix-current) + + " Map function and class text objects + " NOTE: Requires 'textDocument.documentSymbol' support from the language server. + xmap if (coc-funcobj-i) + omap if (coc-funcobj-i) + xmap af (coc-funcobj-a) + omap af (coc-funcobj-a) + xmap ic (coc-classobj-i) + omap ic (coc-classobj-i) + xmap ac (coc-classobj-a) + omap ac (coc-classobj-a) + + nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" + nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" + inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" + inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" + vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" + vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" + + " Use CTRL-S for selections ranges. + " Requires 'textDocument/selectionRange' support of language server. + nmap (coc-range-select) + xmap (coc-range-select) + + " Add `:Format` command to format current buffer. + command! -nargs=0 Format :call CocAction('format') + + " Add `:Fold` command to fold current buffer. + command! -nargs=? Fold :call CocAction('fold', ) + + " Add `:OR` command for organize imports of the current buffer. + command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') + + " Mappings for CoCList + " Show all diagnostics. + nnoremap a :CocList diagnostics + " Manage extensions. + nnoremap e :CocList extensions + " Show commands. + nnoremap c :CocList commands + " Find symbol of current document. + nnoremap o :CocList outline + " Search workspace symbols. + nnoremap s :CocList -I symbols + " Do default action for next item. + nnoremap j :CocNext + " Do default action for previous item. + nnoremap k :CocPrev + " Resume latest coc list. + nnoremap p :CocListResume + ''; + }; + + ezpcusr.uploadScript = pkgs.writeScript "upload_file.sh" '' + #!${pkgs.zsh}/bin/zsh + fileid=$(${pkgs.pwgen}/bin/pwgen 16 1) + + filename=$(basename $1) + extension=$(echo "''${filename##*.}" | awk '{gsub(/^ +| +$/,"")} {print $0}') + if [[ "$extension" = "$filename" ]] then + extension=$(grep "$(file -b --mime-type $1)" ${mimeTypes} | awk '{print $2}') + fi + + rsync -a --chmod=664 "$1" "wizbos.club:~/public/uploads/$fileid.$extension" + echo "https://p.gen2.space/uploads/$fileid.$extension" + ''; + + fonts = { + favFont.name = "Hack Nerd Font Mono"; + favFont.size = 10; + }; + + colors.baseColors = { + base00 = "202124"; + base01 = "27292c"; + base02 = "323639"; + base03 = "44464d"; + base04 = "676c71"; + base05 = "80868b"; + base06 = "9e9e9e"; + base07 = "ffffff"; + base08 = "f44336"; + base09 = "ff9800"; + base0A = "ffeb3b"; + base0B = "00e676"; + base0C = "00bcd4"; + base0D = "2196f3"; + base0E = "673ab7"; + base0F = "8d6e63"; + }; + + programs.fish.interactiveShellInit = '' + export GPG_TTY=(tty) + ${pkgs.gnupg}/bin/gpgconf --launch gpg-agent + ''; + + home.file.".gnupg/gpg-agent.conf".text = '' + enable-ssh-support + pinentry-program ${pkgs.pinentry.curses}/bin/pinentry-curses + default-cache-ttl 60 + max-cache-ttl 120 + ''; + + home.sessionVariables = { + FZF_DEFAULT_COMMAND = "${pkgs.fd}/bin/fd --type f"; + }; + programs.fish.shellAliases = { - node = "node --experimental-repl-await"; + bp = "npm version patch && npm publish && git push"; + sc = "${sc}"; + allgm8 = "${allgm8}"; ls = "lsd"; }; + xdg.configFile."nvim-qt/nvim-qt.conf".text = '' + ext_tabline=false + ext_popupmenu=false + ''; + programs.htop = { enable = true; settings = { @@ -41,6 +332,8 @@ }; programs.git = { + signing.key = "BB661E172B42A7F8"; + signing.signByDefault = true; enable = true; lfs.enable = true; userName = "notgne2"; diff --git a/home-manager/users/notgne2_pc.nix b/home-manager/users/notgne2_pc.nix deleted file mode 100644 index 4932950..0000000 --- a/home-manager/users/notgne2_pc.nix +++ /dev/null @@ -1,332 +0,0 @@ -inputs: -{ config, pkgs, lib, ... }: -let - # TODO: find a better source - mimeTypes = pkgs.fetchurl { - url = - "https://raw.githubusercontent.com/eprints/eprints3.4/master/lib/mime.types"; - sha256 = "0cdhq71wk5h3zcfrz8dyqc3vrjyikwjqsla855v036r54lch0kn2"; - }; - - edt = pkgs.writeScriptBin "edt" '' - #!${pkgs.bash}/bin/bash - if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then - nvim $@ - else - # nvim-qt $@ - nohup kitty nvim "$@" > /dev/null & disown - fi - ''; - - sc = pkgs.writeScript "sc.sh" '' - #!${pkgs.zsh}/bin/zsh - git commit -am "$*" - ''; - - allgm8 = pkgs.writeScript "sc.sh" '' - #!${pkgs.zsh}/bin/zsh - for loc in au-02 us-03 us-04 eu-01; do echo "--- $loc: "; ssh "$loc.gm8.app" "$1"; echo "done"; done - ''; - - prefetch-git = pkgs.writeScript "prefetch-git.sh" '' - #!${pkgs.bash}/bin/bash - nix-prefetch-git $1 --rev $(git ls-remote -h $1 |cut -f1) - ''; -in -{ - imports = [ ./notgne2.nix ]; - - programs.fish.interactiveShellInit = '' - export GPG_TTY=(tty) - ${pkgs.gnupg}/bin/gpgconf --launch gpg-agent - ''; - - home.file.".gnupg/gpg-agent.conf".text = '' - enable-ssh-support - pinentry-program ${pkgs.pinentry.curses}/bin/pinentry-curses - default-cache-ttl 60 - max-cache-ttl 120 - ''; - - programs.git.signing.key = "BB661E172B42A7F8"; - programs.git.signing.signByDefault = true; - - xdg.configFile."nvim/coc-settings.json".source = pkgs.writeText "coc-settings.json" (builtins.toJSON { - languageserver = { - nix = { - command = "${pkgs.rnix-lsp}/bin/rnix-lsp"; - filetypes = [ "nix" ]; - }; - elmLS = { - command = "${pkgs.elmPackages.elm-language-server}/bin/elm-language-server"; - filetypes = [ "elm" ]; - rootPatterns = [ "elm.json" ]; - }; - }; - codeLens.enable = true; - coc.preferences.formatOnSaveFiletypes = [ "rust" "elm" "javascript" "typescript" "json" ]; - }); - - programs.neovim = { - enable = true; - viAlias = true; - vimAlias = true; - vimdiffAlias = true; - withNodeJs = true; - withPython3 = true; - plugins = with pkgs.vimPlugins; [ - direnv-vim - fugitive - vim-nix - camelcasemotion - vim-indent-object - vim-commentary - vim-surround - { - plugin = vim-airline; - config = '' - if exists('g:started_by_firenvim') - let g:airline#extensions#tabline#enabled = 0 - let g:airline_powerline_fonts = 0 - else - let g:airline#extensions#tabline#enabled = 1 - let g:airline_powerline_fonts = 1 - endif - - " remove c, which contains filename, without firevim it's in the buffer, with firevim I don't want to see it, so this can always be applied - let g:airline#extensions#default#layout = [ - \ [ 'a', 'b' ], - \ [ 'x', 'y', 'z', 'error', 'warning' ] - \ ] - ''; - } - coc-nvim - coc-rust-analyzer - coc-tsserver - vim-visual-multi - { - plugin = fzf-vim; - config = '' - map ; :Files - ''; - } - ( - pkgs.vimUtils.buildVimPlugin { - pname = "firenvim"; - src = inputs.firenvim; - # yes im stupid - version = builtins.readFile (pkgs.runCommandNoCC "firenvim-version" { } '' - ${pkgs.jq}/bin/jq -j .version < ${inputs.firenvim}/package.json > $out - ''); - }) - vim-gitgutter - ]; - extraConfig = '' - set encoding=utf-8 - set hidden - set nobackup - set nowritebackup - set cmdheight=2 - set updatetime=200 - set shortmess+=c - " maybe should be number? - set signcolumn=yes - - set clipboard+=unnamedplus - set mouse=a - - map :bnext - map :bprev - - " Use tab for trigger completion with characters ahead and navigate. - " NOTE: Use command ':verbose imap ' to make sure tab is not mapped by - " other plugin before putting this into your config. - inoremap - \ pumvisible() ? "\" : - \ check_back_space() ? "\" : - \ coc#refresh() - inoremap pumvisible() ? "\" : "\" - - function! s:check_back_space() abort - let col = col('.') - 1 - return !col || getline('.')[col - 1] =~# '\s' - endfunction - - " Use to trigger completion. - if has('nvim') - inoremap coc#refresh() - else - inoremap coc#refresh() - endif - - " 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()\" - - " Use `[g` and `]g` to navigate diagnostics - " Use `:CocDiagnostics` to get all diagnostics of current buffer in location list. - nmap [g (coc-diagnostic-prev) - nmap ]g (coc-diagnostic-next) - - " 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') - - " Symbol renaming. - nmap rn (coc-rename) - - " Formatting selected code. - xmap f (coc-format-selected) - nmap f (coc-format-selected) - - " Applying codeAction to the selected region. - " Example: `aap` for current paragraph - xmap a (coc-codeaction-selected) - nmap a (coc-codeaction-selected) - - " Remap keys for applying codeAction to the current buffer. - nmap ac (coc-codeaction) - " Apply AutoFix to problem on the current line. - nmap qf (coc-fix-current) - - " Map function and class text objects - " NOTE: Requires 'textDocument.documentSymbol' support from the language server. - xmap if (coc-funcobj-i) - omap if (coc-funcobj-i) - xmap af (coc-funcobj-a) - omap af (coc-funcobj-a) - xmap ic (coc-classobj-i) - omap ic (coc-classobj-i) - xmap ac (coc-classobj-a) - omap ac (coc-classobj-a) - - nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" - nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" - inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" - inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" - vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" - vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" - - " Use CTRL-S for selections ranges. - " Requires 'textDocument/selectionRange' support of language server. - nmap (coc-range-select) - xmap (coc-range-select) - - " Add `:Format` command to format current buffer. - command! -nargs=0 Format :call CocAction('format') - - " Add `:Fold` command to fold current buffer. - command! -nargs=? Fold :call CocAction('fold', ) - - " Add `:OR` command for organize imports of the current buffer. - command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') - - " Mappings for CoCList - " Show all diagnostics. - nnoremap a :CocList diagnostics - " Manage extensions. - nnoremap e :CocList extensions - " Show commands. - nnoremap c :CocList commands - " Find symbol of current document. - nnoremap o :CocList outline - " Search workspace symbols. - nnoremap s :CocList -I symbols - " Do default action for next item. - nnoremap j :CocNext - " Do default action for previous item. - nnoremap k :CocPrev - " Resume latest coc list. - nnoremap p :CocListResume - ''; - }; - - home.sessionVariables = { - FZF_DEFAULT_COMMAND = "${pkgs.fd}/bin/fd --type f"; - }; - - home.packages = with pkgs; [ - xclip # needed for nvim - nixpkgs-fmt - neovim-qt - edt - ]; - - ezpcusr.uploadScript = pkgs.writeScript "upload_file.sh" '' - #!${pkgs.zsh}/bin/zsh - fileid=$(${pkgs.pwgen}/bin/pwgen 16 1) - - filename=$(basename $1) - extension=$(echo "''${filename##*.}" | awk '{gsub(/^ +| +$/,"")} {print $0}') - if [[ "$extension" = "$filename" ]] then - extension=$(grep "$(file -b --mime-type $1)" ${mimeTypes} | awk '{print $2}') - fi - - rsync -a --chmod=664 "$1" "wizbos.club:~/public/uploads/$fileid.$extension" - echo "https://p.gen2.space/uploads/$fileid.$extension" - ''; - - fonts = { - favFont.name = "Hack Nerd Font Mono"; - favFont.size = 10; - }; - - colors.baseColors = { - base00 = "202124"; - base01 = "27292c"; - base02 = "323639"; - base03 = "44464d"; - base04 = "676c71"; - base05 = "80868b"; - base06 = "9e9e9e"; - base07 = "ffffff"; - base08 = "f44336"; - base09 = "ff9800"; - base0A = "ffeb3b"; - base0B = "00e676"; - base0C = "00bcd4"; - base0D = "2196f3"; - base0E = "673ab7"; - base0F = "8d6e63"; - }; - - programs.fish.shellAliases = { - bp = "npm version patch && npm publish && git push"; - nano = "edt"; - vi = "edt"; - sc = "${sc}"; - allgm8 = "${allgm8}"; - prefetch-git = "${prefetch-git}"; - }; - - programs.git = { - enable = true; - lfs.enable = true; - userName = "notgne2"; - userEmail = "gen2@gen2.space"; - }; - - xdg.configFile."nvim-qt/nvim-qt.conf".text = '' - ext_tabline=false - ext_popupmenu=false - ''; -}