summaryrefslogtreecommitdiff
path: root/nvim/default.nix
blob: 4e108f0df7c8bed55480fa63ff8293524e9b8eac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{}: rec {

  pkgs = (import ../pkgs.nix).stable {};

  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 = [
      gopls
    ];
  };

  init = pkgs.writeText "nvim-init.lua" ''
    vim.cmd('source ${pkgs.vimPlugins.vim-plug}/plug.vim')

    local Plug = vim.fn['plug#']

    vim.call('plug#begin')

    Plug('${pkgs.vimPlugins.nerdtree}', { ['on'] = 'NERDTreeToggle' })
    Plug('${pkgs.vimPlugins.nerdtree-git-plugin}')
    Plug('${pkgs.vimPlugins.vim-gitgutter}')

    Plug('${pkgs.vimPlugins.nvim-lspconfig}')
    Plug('${pkgs.vimPlugins.nvim-cmp}')
    Plug('${pkgs.vimPlugins.cmp-nvim-lsp}')

    vim.call('plug#end')

    vim.cmd('source ${./init.vim}')

    ${builtins.readFile ./init.lua}
  '';

  nvim = pkgs.writeScriptBin "nvim" ''
    #!${pkgs.bash}/bin/bash
    export PATH=${env}/bin:$PATH
    exec ${pkgs.neovim}/bin/nvim -u ${init} "$@"
  '';
}