From 659ef00c71fd17efd2d8ffe5bbe5bd9f1698e73d Mon Sep 17 00:00:00 2001 From: Brian Picciano Date: Sun, 6 Oct 2024 17:43:18 +0200 Subject: Drag my neovim config kicking and screaming into the future (LSP) --- nvim/default.nix | 81 +++++++++++++++++++++++--------------------------------- 1 file changed, 33 insertions(+), 48 deletions(-) (limited to 'nvim/default.nix') diff --git a/nvim/default.nix b/nvim/default.nix index 87a4693..4e108f0 100644 --- a/nvim/default.nix +++ b/nvim/default.nix @@ -2,69 +2,54 @@ pkgs = (import ../pkgs.nix).stable {}; - misspell = pkgs.buildGoPackage rec { - pname = "misspell"; - version = "0.3.4"; - goPackagePath = "github.com/client9/misspell"; - - src = pkgs.fetchFromGitHub { - owner = "client9"; - repo = "misspell"; - rev = "v${version}"; - sha256 = "1vwf33wsc4la25zk9nylpbp9px3svlmldkm0bha4hp56jws4q9cs"; - }; - - goDeps = ./misspellDeps.nix; + gopls = pkgs.buildGoModule rec { + pname = "gopls"; + version = "0.16.2"; + + src = "${pkgs.fetchFromGitHub { + owner = "golang"; + repo = "tools"; + rev = "gopls/v${version}"; + sha256 = "sha256-amy00VMUcmyjDoZ4d9/+YswfcZ+1/cGvFsA4sAmc1dA="; + }}/gopls"; + + subPackages = ["."]; + vendorHash = "sha256-ta94xPboFtSxFeuMtPX76XiC1O7osNl4oLk64wIyyz4="; + doCheck = false; }; env = pkgs.buildEnv { name = "nvim-env"; paths = [ - pkgs.shellcheck - misspell + gopls ]; }; - envPlugins = "${env}/share/vim-plugins"; + init = pkgs.writeText "nvim-init.lua" '' + vim.cmd('source ${pkgs.vimPlugins.vim-plug}/plug.vim') - init = pkgs.writeText "nvim-init" '' - source ${pkgs.vimPlugins.vim-plug}/plug.vim + local Plug = vim.fn['plug#'] - call plug#begin() - Plug '${pkgs.vimPlugins.deoplete-nvim}' - Plug '${pkgs.vimPlugins.nerdtree}', { 'on': 'NERDTreeToggle' } - Plug '${pkgs.vimPlugins.nerdtree-git-plugin}' - Plug '${pkgs.vimPlugins.vim-gitgutter}' - Plug '${pkgs.vimPlugins.neomake}' - Plug '${pkgs.vimPlugins.vim-go}', { 'for': 'go' } - Plug '${pkgs.vimPlugins.vim-nix}', { 'for': 'nix' } - Plug '${pkgs.vimPlugins.rust-vim}', { 'for': 'rust' } - call plug#end() + vim.call('plug#begin') - source ${./init.vim} - ''; + Plug('${pkgs.vimPlugins.nerdtree}', { ['on'] = 'NERDTreeToggle' }) + Plug('${pkgs.vimPlugins.nerdtree-git-plugin}') + Plug('${pkgs.vimPlugins.vim-gitgutter}') - nvimRaw = pkgs.writeScriptBin "nvim" '' - #!${pkgs.bash}/bin/bash - export PATH=${env}/bin:$PATH - exec ${pkgs.neovim}/bin/nvim -u ${init} "$@" - ''; + Plug('${pkgs.vimPlugins.nvim-lspconfig}') + Plug('${pkgs.vimPlugins.nvim-cmp}') + Plug('${pkgs.vimPlugins.cmp-nvim-lsp}') - rplugin = pkgs.stdenv.mkDerivation { - name = "nvim-rplugin"; - buildInputs = [ pkgs.git pkgs.tree nvimRaw ]; - builder = builtins.toFile "builder.sh" '' - source $stdenv/setup - mkdir -p "$out"/ - export NVIM_RPLUGIN_MANIFEST="$out"/rplugin.vim - nvim -i NONE -c ':UpdateRemotePlugins' -c ':exit' >/dev/null - ''; - }; + vim.call('plug#end') + + vim.cmd('source ${./init.vim}') + + ${builtins.readFile ./init.lua} + ''; nvim = pkgs.writeScriptBin "nvim" '' #!${pkgs.bash}/bin/bash - export NVIM_RPLUGIN_MANIFEST=${rplugin}/rplugin.vim - exec ${nvimRaw}/bin/nvim "$@" + export PATH=${env}/bin:$PATH + exec ${pkgs.neovim}/bin/nvim -u ${init} "$@" ''; - } -- cgit v1.2.3