summaryrefslogtreecommitdiff
path: root/home/neovim/default.nix
blob: 36e1575dc79e11c7f8cd7012b9b08927a4470770 (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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
{
  config,
  lib,
  pkgs,
  ...
}: let
  lua_cfg = import ./config.nix {inherit lib config;};
  lua = builtins.readFile ./init.lua;
in {
  home.sessionVariables.EDITOR = "nvim";

  programs.neovim = {
    enable = true;
    viAlias = true;
    vimAlias = true;

    extraLuaConfig = ''
      local config = ${lua_cfg}

      ${lua}
    '';

    plugins = with pkgs.vimPlugins; [
      # Dependencies
      vim-devicons
      nvim-web-devicons
      plenary-nvim
      # Colorscheme
      base16-nvim
      # Mode line
      lualine-nvim
      # Buffer line
      bufferline-nvim
      # File browser
      nvim-tree-lua
      # Undo tree
      undotree
      # Trouble (error menu)
      trouble-nvim
      # Telescope (buffers/find/grep/help)
      telescope-nvim
      # Snippets
      vim-vsnip
      vim-vsnip-integ
      friendly-snippets
      # Completion
      cmp-buffer
      cmp-nvim-lsp
      cmp-vsnip
      nvim-cmp
      # Sourround delimiters
      nvim-surround
      # Comment functions
      nerdcommenter
      # Treesitter
      nvim-treesitter.withAllGrammars
      # Syntax hilighting
      vim-illuminate
      vim-table-mode
      nvim-highlight-colors
      colorful-menu-nvim
      # Todo comments
      todo-comments-nvim
      # Lsp server
      nvim-lspconfig
      # Notifications
      fidget-nvim
      # Auto indentation
      indent-o-matic
      # 80 column width
      virt-column-nvim
    ];
  };
}