From 0459c372a048110cfc08b15af340bfe3b3a57042 Mon Sep 17 00:00:00 2001 From: Charlotte Van Petegem Date: Wed, 6 May 2020 15:23:19 +0200 Subject: [PATCH] Get rid of project-specific vim --- configurations/neovim/base.nix | 145 ---------------- configurations/neovim/default.nix | 180 +++++++++++++++++++- packages/kotlin-language-server/default.nix | 2 +- shells/accentor-android.nix | 37 ---- shells/accentor-api.nix | 25 +-- shells/accentor-web.nix | 26 +-- shells/dodona.nix | 30 +--- shells/javafx.nix | 37 +--- shells/ledger.nix | 17 -- 9 files changed, 182 insertions(+), 317 deletions(-) delete mode 100644 configurations/neovim/base.nix delete mode 100644 shells/ledger.nix diff --git a/configurations/neovim/base.nix b/configurations/neovim/base.nix deleted file mode 100644 index 16a0540d..00000000 --- a/configurations/neovim/base.nix +++ /dev/null @@ -1,145 +0,0 @@ -{ pkgs, ... }: -let - customPlugins.snow-color-theme = pkgs.vimUtils.buildVimPlugin { - name = "snow"; - src = pkgs.fetchFromGitHub { - owner = "nightsense"; - repo = "snow"; - rev = "f9800e987e404efed4748fe8098e04ddbec9770b"; - sha256 = "099fky1bpppac5785bhx1jc26gfpm8n837p8487j1rf1lwq83q33"; - }; - }; -in -{ - customRC = '' - set autoread - "" Theming - - set termguicolors - set background=light - colorscheme snow - - "" General settings - - " Undo over sessions - set undofile - set undodir=~/.cache/nvimundo - - " Automatically save sessions on exit and load them on start - function! MakeSession() - let b:sessiondir = $HOME . "/.config/nvim/sessions" . getcwd() - if (filewritable(b:sessiondir) != 2) - exe 'silent !mkdir -p ' b:sessiondir - redraw! - endif - let b:filename = b:sessiondir . '/session.vim' - exe "mksession! " . b:filename - endfunction - - function! LoadSession() - let b:sessiondir = $HOME . "/.config/nvim/sessions" . getcwd() - let b:sessionfile = b:sessiondir . "/session.vim" - if (filereadable(b:sessionfile)) - exe 'source ' b:sessionfile - else - echo "No session loaded." - endif - endfunction - if(argc() == 0) - au VimEnter * nested :call LoadSession() - au VimLeave * :call MakeSession() - endif - - "" Filetype configuration - - " Base settings for all files - - syntax enable - set number - set showcmd - set scrolloff=8 - set expandtab - set tabstop=4 - set shiftwidth=4 - set linebreak - - set list - set listchars=tab:·\ ,trail:· - set inccommand=split - set clipboard=unnamedplus - - filetype plugin indent on - - "" Fuzzy search in vim - - function! s:completedFiles(winid, filename, ...) abort - bdelete! - call win_gotoid(a:winid) - if filereadable(a:filename) - let lines = readfile(a:filename) - if !empty(lines) - exe ':e ' . lines[0] - endif - call delete(a:filename) - endif - endfunction - - function! FzyFiles() - let file = tempname() - let winid = win_getid() - let cmd = split(&shell) + split(&shellcmdflag) + ["${pkgs.ripgrep.out}/bin/rg --files --hidden -g '!/.git' --smart-case | ${pkgs.fzy.out}/bin/fzy > " . file] - let F = function('s:completedFiles', [winid, file]) - botright 10 new - call termopen(cmd, {'on_exit': F}) - startinsert - endfunction - - function! s:completedGrep(winid, filename, ...) abort - bdelete! - call win_gotoid(a:winid) - if filereadable(a:filename) - let lines = readfile(a:filename) - if !empty(lines) - let list = split(lines[0], ':') - let file = list[0] - let line = list[1] - exe ':e ' . file - exe line - endif - call delete(a:filename) - endif - endfunction - - function! FzyGrep() - let file = tempname() - let winid = win_getid() - let cmd = split(&shell) + split(&shellcmdflag) + ["${pkgs.ripgrep.out}/bin/rg --vimgrep --hidden -g '!/.git' '^' | ${pkgs.fzy.out}/bin/fzy > " . file] - let F = function('s:completedGrep', [winid, file]) - botright 10 new - call termopen(cmd, {'on_exit': F}) - startinsert - endfunction - - nnoremap :call FzyFiles() - nnoremap :call FzyGrep() - - "" Plugin configuration - let g:ale_fixers = { '*': ['remove_trailing_lines', 'trim_whitespace'] } - let g:ale_fix_on_save = 1 - - let g:deoplete#enable_at_startup = 1 - ''; - vam.knownPlugins = pkgs.vimPlugins // customPlugins; - vam.pluginDictionaries = [ - { - names = [ - "ale" - "auto-pairs" - "deoplete-nvim" - "editorconfig-vim" - "snow-color-theme" - "vim-nix" - ]; - } - ]; -} diff --git a/configurations/neovim/default.nix b/configurations/neovim/default.nix index aa77a342..0cfbebfb 100644 --- a/configurations/neovim/default.nix +++ b/configurations/neovim/default.nix @@ -1,11 +1,185 @@ -with import { }; - +{ pkgs, ... }: +let + customPlugins = { + snow-color-theme = pkgs.vimUtils.buildVimPlugin { + name = "snow"; + src = pkgs.fetchFromGitHub { + owner = "nightsense"; + repo = "snow"; + rev = "f9800e987e404efed4748fe8098e04ddbec9770b"; + sha256 = "099fky1bpppac5785bhx1jc26gfpm8n837p8487j1rf1lwq83q33"; + }; + }; + kotlin-vim = pkgs.vimUtils.buildVimPlugin { + name = "kotlin-vim"; + src = pkgs.fetchFromGitHub { + owner = "udalov"; + repo = "kotlin-vim"; + rev = "b9fa728701a0aa0b9a2ffe92f10880348fc27a8f"; + sha256 = "1yqzxabhpc4jbdlzhsysp0vi1ayqg0vnpysvx4ynd9961q2fk3sz"; + }; + }; + }; + jdtls = import ../../packages/jdtls/default.nix { inherit pkgs; stdenv = pkgs.stdenv; }; + kotlinls = import ../../packages/kotlin-language-server/default.nix { inherit pkgs; }; + nodePackages = import ../../packages/node/default.nix { inherit pkgs; }; +in { home-manager.users.charlotte = { pkgs, ... }: { home.packages = [ ( pkgs.neovim.override { - configure = (import ./base.nix { inherit pkgs; }); + configure = { + customRC = '' + set autoread + "" Theming + + set termguicolors + set background=light + colorscheme snow + + "" General settings + + " Undo over sessions + set undofile + set undodir=~/.cache/nvimundo + + " Automatically save sessions on exit and load them on start + function! MakeSession() + let b:sessiondir = $HOME . "/.config/nvim/sessions" . getcwd() + if (filewritable(b:sessiondir) != 2) + exe 'silent !mkdir -p ' b:sessiondir + redraw! + endif + let b:filename = b:sessiondir . '/session.vim' + exe "mksession! " . b:filename + endfunction + + function! LoadSession() + let b:sessiondir = $HOME . "/.config/nvim/sessions" . getcwd() + let b:sessionfile = b:sessiondir . "/session.vim" + if (filereadable(b:sessionfile)) + exe 'source ' b:sessionfile + else + echo "No session loaded." + endif + endfunction + if(argc() == 0) + au VimEnter * nested :call LoadSession() + au VimLeave * :call MakeSession() + endif + + "" Filetype configuration + + " Base settings for all files + + syntax enable + set number + set showcmd + set scrolloff=8 + set expandtab + set tabstop=4 + set shiftwidth=4 + set linebreak + + set list + set listchars=tab:·\ ,trail:· + set inccommand=split + set clipboard=unnamedplus + + filetype plugin indent on + + "" Fuzzy search in vim + + function! s:completedFiles(winid, filename, ...) abort + bdelete! + call win_gotoid(a:winid) + if filereadable(a:filename) + let lines = readfile(a:filename) + if !empty(lines) + exe ':e ' . lines[0] + endif + call delete(a:filename) + endif + endfunction + + function! FzyFiles() + let file = tempname() + let winid = win_getid() + let cmd = split(&shell) + split(&shellcmdflag) + ["${pkgs.ripgrep.out}/bin/rg --files --hidden -g '!/.git' --smart-case | ${pkgs.fzy.out}/bin/fzy > " . file] + let F = function('s:completedFiles', [winid, file]) + botright 10 new + call termopen(cmd, {'on_exit': F}) + startinsert + endfunction + + function! s:completedGrep(winid, filename, ...) abort + bdelete! + call win_gotoid(a:winid) + if filereadable(a:filename) + let lines = readfile(a:filename) + if !empty(lines) + let list = split(lines[0], ':') + let file = list[0] + let line = list[1] + exe ':e ' . file + exe line + endif + call delete(a:filename) + endif + endfunction + + function! FzyGrep() + let file = tempname() + let winid = win_getid() + let cmd = split(&shell) + split(&shellcmdflag) + ["${pkgs.ripgrep.out}/bin/rg --vimgrep --hidden -g '!/.git' '^' | ${pkgs.fzy.out}/bin/fzy > " . file] + let F = function('s:completedGrep', [winid, file]) + botright 10 new + call termopen(cmd, {'on_exit': F}) + startinsert + endfunction + + nnoremap :call FzyFiles() + nnoremap :call FzyGrep() + + "" Plugin configuration + let g:ale_fixers = { '*': ['remove_trailing_lines', 'trim_whitespace'] } + let g:ale_fix_on_save = 1 + + let g:deoplete#enable_at_startup = 1 + + " Required for operations modifying multiple buffers like rename + set hidden + + let g:LanguageClient_serverCommands = { + \ 'vue': ['${nodePackages.vue-language-server}/bin/vls'], + \ 'javascript': ['${nodePackages.javascript-typescript-langserver}/bin/javascript-typescript-stdio'], + \ 'typescript': ['${nodePackages.typescript-language-server}/bin/typescript-language-server', '--stdio'], + \ 'java': ['${jdtls}/bin/jdtls'], + \ 'kotlin': ['${kotlinls}/bin/kotlin-language-server'] + \ 'ruby': ['${pkgs.solargraph}/bin/solargraph', 'stdio'], + \ } + ''; + vam.knownPlugins = pkgs.vimPlugins // customPlugins; + vam.pluginDictionaries = [ + { + names = [ + "ale" + "auto-pairs" + "deoplete-nvim" + "editorconfig-vim" + "kotlin-vim" + "LanguageClient-neovim" + "snow-color-theme" + "vim-ledger" + "vim-nix" + "vim-ruby" + "vim-vue" + "yats-vim" + ]; + } + ]; + }; } ) ]; diff --git a/packages/kotlin-language-server/default.nix b/packages/kotlin-language-server/default.nix index eb965467..b6290026 100644 --- a/packages/kotlin-language-server/default.nix +++ b/packages/kotlin-language-server/default.nix @@ -8,7 +8,7 @@ buildGradle { envSpec = ./gradle-env.json; src = fetchTarball { url = "https://github.com/fwcd/kotlin-language-server/archive/master.tar.gz"; - sha256 = "0spcxrk6gyxrrwnffsmr2f5y8zs0nq1fq2pkscih56zxz0v3dm50"; + sha256 = "16qddjwcj1n79c4p9dqlj1vg6yg5rkvzb8r15jbyxsy82mp6ib3k"; }; gradleFlags = [ "server:installDist" ]; installPhase = '' diff --git a/shells/accentor-android.nix b/shells/accentor-android.nix index 0953a7a5..f085793e 100644 --- a/shells/accentor-android.nix +++ b/shells/accentor-android.nix @@ -1,8 +1,5 @@ let pkgs = import { config.android_sdk.accept_license = true; }; - baseVimConfig = import ../programs/neovim/base.nix { inherit pkgs; }; - jdtls = import ../packages/jdtls/default.nix { inherit pkgs; stdenv = pkgs.stdenv; }; - kotlinls = import ../packages/kotlin-language-server/default.nix { inherit pkgs; }; buildToolsVersion = "28.0.3"; composed = pkgs.androidenv.composeAndroidPackages { toolsVersion = "26.1.1"; @@ -24,15 +21,6 @@ let # useGoogleTVAddOns = false; # includeExtras = [ "extras;google;gcm" ]; }; - customPlugins.kotlin-vim = pkgs.vimUtils.buildVimPlugin { - name = "kotlin-vim"; - src = pkgs.fetchFromGitHub { - owner = "udalov"; - repo = "kotlin-vim"; - rev = "b9fa728701a0aa0b9a2ffe92f10880348fc27a8f"; - sha256 = "1yqzxabhpc4jbdlzhsysp0vi1ayqg0vnpysvx4ynd9961q2fk3sz"; - }; - }; gradle-fhs-nix = pkgs.writeText "gradle-fhs.nix" '' { run }: let @@ -73,31 +61,6 @@ pkgs.mkShell { gradle-run-script sign-release jdk11 - jdtls - ( - neovim.override { - configure = { - customRC = baseVimConfig.customRC + '' - " Required for operations modifying multiple buffers like rename - set hidden - - let g:LanguageClient_serverCommands = { - \ 'java': ['${jdtls}/bin/jdtls'], - \ 'kotlin': ['${kotlinls}/bin/kotlin-language-server'] - \ } - ''; - vam.knownPlugins = baseVimConfig.vam.knownPlugins // customPlugins; - vam.pluginDictionaries = (baseVimConfig.vam.pluginDictionaries or [ ]) ++ [ - { - names = [ - "kotlin-vim" - "LanguageClient-neovim" - ]; - } - ]; - }; - } - ) ]; shellHook = '' export ANDROID_SDK_ROOT="${composed.androidsdk}/libexec/android-sdk/" diff --git a/shells/accentor-api.nix b/shells/accentor-api.nix index 05c7b15c..da944a55 100644 --- a/shells/accentor-api.nix +++ b/shells/accentor-api.nix @@ -1,6 +1,6 @@ let pkgs = import { }; - baseVimConfig = import ../programs/neovim/base.nix { inherit pkgs; }; + baseVimConfig = import ../configurations/neovim/base.nix { inherit pkgs; }; in pkgs.mkShell { buildInputs = with pkgs; [ @@ -9,29 +9,6 @@ pkgs.mkShell { ruby_2_7 taglib zlib - ( - neovim.override { - configure = { - customRC = baseVimConfig.customRC + '' - " Required for operations modifying multiple buffers like rename - set hidden - - let g:LanguageClient_serverCommands = { - \ 'ruby': ['${solargraph}/bin/solargraph', 'stdio'], - \ } - ''; - vam.knownPlugins = baseVimConfig.vam.knownPlugins; - vam.pluginDictionaries = (baseVimConfig.vam.pluginDictionaries or [ ]) ++ [ - { - names = [ - "LanguageClient-neovim" - "vim-ruby" - ]; - } - ]; - }; - } - ) ( pkgs.writeScriptBin "start-db" '' #!/${pkgs.zsh}/bin/zsh diff --git a/shells/accentor-web.nix b/shells/accentor-web.nix index c193d09d..3856032f 100644 --- a/shells/accentor-web.nix +++ b/shells/accentor-web.nix @@ -1,34 +1,10 @@ let pkgs = import { }; - baseVimConfig = import ../programs/neovim/base.nix { inherit pkgs; }; - nodePackages = import ../packages/node/default.nix { inherit pkgs; }; in pkgs.mkShell { buildInputs = with pkgs; [ nodejs-12_x + python38 yarn - ( - neovim.override { - configure = { - customRC = baseVimConfig.customRC + '' - " Required for operations modifying multiple buffers like rename - set hidden - - let g:LanguageClient_serverCommands = { - \ 'vue': ['${nodePackages.vue-language-server}/bin/vls'], - \ } - ''; - vam.knownPlugins = baseVimConfig.vam.knownPlugins; - vam.pluginDictionaries = (baseVimConfig.vam.pluginDictionaries or [ ]) ++ [ - { - names = [ - "LanguageClient-neovim" - "vim-vue" - ]; - } - ]; - }; - } - ) ]; } diff --git a/shells/dodona.nix b/shells/dodona.nix index 191e1b6c..38c5cc10 100644 --- a/shells/dodona.nix +++ b/shells/dodona.nix @@ -1,7 +1,5 @@ let pkgs = import { }; - baseVimConfig = import ../programs/neovim/base.nix { inherit pkgs; }; - nodePackages = import ../packages/node/default.nix { inherit pkgs; }; in pkgs.mkShell { buildInputs = with pkgs; [ @@ -13,7 +11,7 @@ pkgs.mkShell { zlib ( pkgs.writeScriptBin "start-db" '' - #!${pkgs.zsh}/bin/zsh + #!${zsh}/bin/zsh trap "docker stop dodona-db" 0 trap "docker stop dodona-cache" 0 @@ -25,32 +23,6 @@ pkgs.mkShell { wait $child '' ) - ( - neovim.override { - configure = { - customRC = baseVimConfig.customRC + '' - " Required for operations modifying multiple buffers like rename - set hidden - - let g:LanguageClient_serverCommands = { - \ 'ruby': ['${solargraph}/bin/solargraph', 'stdio'], - \ 'javascript': ['${nodePackages.javascript-typescript-langserver}/bin/javascript-typescript-stdio'], - \ 'typescript': ['${nodePackages.typescript-language-server}/bin/typescript-language-server', '--stdio'], - \ } - ''; - vam.knownPlugins = baseVimConfig.vam.knownPlugins; - vam.pluginDictionaries = (baseVimConfig.vam.pluginDictionaries or [ ]) ++ [ - { - names = [ - "LanguageClient-neovim" - "vim-ruby" - "yats-vim" - ]; - } - ]; - }; - } - ) ]; shellHook = '' export DATABASE_URL="mysql2://root:dodona@127.0.0.1:3306/dodona" diff --git a/shells/javafx.nix b/shells/javafx.nix index e5f00408..59742453 100644 --- a/shells/javafx.nix +++ b/shells/javafx.nix @@ -1,7 +1,6 @@ let pkgs = import { }; - baseVimConfig = import ../programs/neovim/base.nix { inherit pkgs; }; - jdtls = import ../packages/jdtls/default.nix { inherit pkgs; stdenv = pkgs.stdenv; }; + baseVimConfig = import ../configurations/neovim/base.nix { inherit pkgs; }; extraRpath = pkgs.stdenv.lib.strings.makeLibraryPath (with pkgs; [ ffmpeg ]); in pkgs.mkShell { @@ -15,40 +14,6 @@ pkgs.mkShell { '' ) jdk11 - jdtls openjfx11 - ( - pkgs.writeScriptBin "pmd" '' - #!${pkgs.zsh}/bin/zsh - - ${pkgs.pmd}/bin/run.sh pmd $@ - '' - ) - ( - neovim.override { - configure = { - customRC = baseVimConfig.customRC + '' - " Required for operations modifying multiple buffers like rename - set hidden - - let g:LanguageClient_serverCommands = { - \ 'java': ['${jdtls}/bin/jdtls'], - \ } - - let g:ale_linters = { - \ 'java': ['pmd'], - \} - ''; - vam.knownPlugins = baseVimConfig.vam.knownPlugins; - vam.pluginDictionaries = (baseVimConfig.vam.pluginDictionaries or [ ]) ++ [ - { - names = [ - "LanguageClient-neovim" - ]; - } - ]; - }; - } - ) ]; } diff --git a/shells/ledger.nix b/shells/ledger.nix deleted file mode 100644 index a8a64c45..00000000 --- a/shells/ledger.nix +++ /dev/null @@ -1,17 +0,0 @@ -let - pkgs = import { }; - baseVimConfig = import ../programs/neovim/base.nix { inherit pkgs; }; -in -pkgs.mkShell { - buildInputs = with pkgs; [ - ( - neovim.override { - configure = { - customRC = baseVimConfig.customRC; - vam.knownPlugins = baseVimConfig.vam.knownPlugins; - vam.pluginDictionaries = (baseVimConfig.vam.pluginDictionaries or [ ]) ++ [{ name = "vim-ledger"; }]; - }; - } - ) - ]; -}