diff options
author | Brian Picciano <mediocregopher@gmail.com> | 2017-10-17 18:12:57 -0600 |
---|---|---|
committer | mediocregopher <mediocregopher@gmail.com> | 2021-10-03 17:22:56 -0600 |
commit | 07ab3a77b44944a1ac234fbd717391f36370416e (patch) | |
tree | edd959740bf9256bf38e9c2e3cacda8c555f8c56 /nvim/default.nix |
initial public commit
Diffstat (limited to 'nvim/default.nix')
-rw-r--r-- | nvim/default.nix | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/nvim/default.nix b/nvim/default.nix new file mode 100644 index 0000000..d6d4a94 --- /dev/null +++ b/nvim/default.nix @@ -0,0 +1,94 @@ +{ + + pkgs ? (import ../pkgs.nix) {}, + +}: rec { + + goimports = pkgs.buildGoModule rec { + pname = "goimports"; + version = "v0.1.7"; + src = builtins.fetchGit { + url = "https://go.googlesource.com/tools"; + rev = "0df0ca0f43117120bd7cc900ebf765f9b799438a"; + }; + vendorSha256 = "1vs4vbl3kh8lbqrm4yqqn27ammlqj7jdbi0ca9s4fkja2sk45ibi"; + subPackages = [ "cmd/goimports" ]; + }; + + # the gocode-gomod which comes with nixpkgs places the binary at + # gocode-gomod, we gotta rename it + gocode = pkgs.stdenv.mkDerivation { + name = "gocode"; + src = pkgs.gocode-gomod; + builder = builtins.toFile "builder.sh" '' + source $stdenv/setup + mkdir -p "$out"/bin/ + cp "$src"/bin/gocode-gomod "$out"/bin/gocode + ''; + }; + + env = pkgs.buildEnv { + name = "nvim-env"; + paths = [ + pkgs.vimPlugins.vim-plug + pkgs.vimPlugins.deoplete-nvim + pkgs.vimPlugins.deoplete-go + pkgs.vimPlugins.nerdtree + pkgs.vimPlugins.nerdtree-git-plugin + pkgs.vimPlugins.vim-gitgutter + pkgs.vimPlugins.neomake + pkgs.vimPlugins.papercolor-theme + pkgs.vimPlugins.vim-go + pkgs.vimPlugins.vim-nix + + pkgs.golangci-lint + pkgs.gopls + gocode + goimports + ]; + }; + + envPlugins = "${env}/share/vim-plugins"; + + init = pkgs.writeText "nvim-init" '' + source ${envPlugins}/vim-plug/plug.vim + + call plug#begin('${envPlugins}') + Plug '${envPlugins}/deoplete-nvim' + Plug '${envPlugins}/deoplete-go', { 'for': 'go' } + Plug '${envPlugins}/nerdtree', { 'on': 'NERDTreeToggle' } + Plug '${envPlugins}/nerdtree-git-plugin' + Plug '${envPlugins}/vim-gitgutter' + Plug '${envPlugins}/neomake' + Plug '${envPlugins}/papercolor-theme' + Plug '${envPlugins}/vim-go', { 'for': 'go' } + Plug '${envPlugins}/vim-nix', { 'for': 'nix' } + call plug#end() + + source ${./init.vim} + ''; + + nvimRaw = pkgs.writeScriptBin "nvim" '' + #!${pkgs.bash}/bin/bash + export PATH=${env}/bin:$PATH + exec ${pkgs.neovim}/bin/nvim -u ${init} "$@" + ''; + + rplugin = pkgs.stdenv.mkDerivation { + name = "nvim-rplugin"; + buildInputs = [ pkgs.git nvimRaw ]; + builder = builtins.toFile "builder.sh" '' + source $stdenv/setup + mkdir -p "$out"/ + export NVIM_RPLUGIN_MANIFEST="$out"/rplugin.vim + nvim -c ':UpdateRemotePlugins' -c ':exit' >/dev/null + ''; + }; + + nvim = pkgs.writeScriptBin "nvim" '' + #!${pkgs.bash}/bin/bash + export NVIM_RPLUGIN_MANIFEST=${rplugin}/rplugin.vim + exec ${nvimRaw}/bin/nvim "$@" + ''; + +} |