Everything I take with me from machine to machine.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
loadout/nvim/default.nix

94 lines
2.5 KiB

{
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 "$@"
'';
}