summaryrefslogtreecommitdiff
path: root/home/neovim/default.nix
blob: 66d26250ac494318b700d67156d2afb081ff5d9d (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
75
76
{
  config,
  lib,
  pkgs,
  ...
}: let
  lua_cfg = import ./config.nix {inherit lib config;};
  lua = builtins.readFile ./init.lua;
in {
  environment.variables.EDITOR = "nvim";

  home-manager.users.${config.user} = {
    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
      ];
    };
  };
}