summaryrefslogtreecommitdiff
path: root/plugins/default.nix
blob: df6d3484988b56d35c3648d1a0108f41708518cc (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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
{pkgs, ...}: let
  inherit (pkgs) vimPlugins;
in rec {
  config = {
    src = ../config;
    lazy = false;
    priority = 1000;
  };

  catppuccin-nvim = {
    package = vimPlugins.catppuccin-nvim;

    config = ./catppuccin.lua;
  };

  fidget-nvim = {
    package = vimPlugins.fidget-nvim.overrideAttrs (_: {
      src = pkgs.fetchFromGitHub {
        owner = "j-hui";
        repo = "fidget.nvim";
        rev = "41f327b53c7977d47aee56f05e0bdbb4b994c5eb";
        hash = "sha256-v9qARsW8Gozit4Z3+igiemjI467QgRhwM+crqwO9r6U=";
      };
    });
  };

  flash-nvim = {
    package = vimPlugins.flash-nvim;
    event = "VeryLazy";
  };

  gitsigns-nvim = {
    package = vimPlugins.gitsigns-nvim;
    event = ["BufReadPre" "BufNewFile"];
  };

  ibl = {
    package = vimPlugins.indent-blankline-nvim;

    event = ["BufReadPost" "BufNewFile"];

    config = {
      indent = {
        char = "│";
        tab_char = "│";
      };

      exclude.filetypes = [
        "help"
        "neo-tree"
        "Trouble"
        "lazy"
        "mason"
        "notify"
        "toggleterm"
      ];

      scope.enabled = false;
    };
  };

  lualine-nvim = {
    package = vimPlugins.lualine-nvim;

    event = "VeryLazy";

    dependencies = {
      nvim-web-devicons.package = vimPlugins.nvim-web-devicons;
    };

    config = ./lualine.lua;
  };

  neo-tree-nvim = {
    package = vimPlugins.neo-tree-nvim;
    dependencies = {
      plenary-nvim.package = vimPlugins.plenary-nvim;
      inherit (lualine-nvim.dependencies) nvim-web-devicons;
      inherit nui-nvim;
    };

    config = ./neo-tree.lua;
  };

  # TODO: configure mini.pairs, mini.indentscope, & mini.comment
  mini-nvim.package = vimPlugins.mini-nvim;

  nvim-cmp = {
    package = vimPlugins.nvim-cmp;
    dependencies = {
      cmp-nvim-lsp.package = vimPlugins.cmp-nvim-lsp;
      cmp-buffer.package = vimPlugins.cmp-buffer;
      cmp_luasnip.package = vimPlugins.cmp_luasnip;
      cmp-async-path.package = vimPlugins.cmp-async-path;
      luasnip.package = vimPlugins.luasnip;
    };

    event = "InsertEnter";
    config = ./cmp.lua;
  };

  dressing-nvim = {
    package = vimPlugins.dressing-nvim;
    lazy = true;
    init = ./dressing.lua;
  };

  noice-nvim = {
    package = vimPlugins.noice-nvim;
    event = "VeryLazy";

    config = ./noice.lua;
  };

  nui-nvim = {
    package = vimPlugins.nui-nvim;
    lazy = true;
  };

  nvim-lspconfig = {
    package = vimPlugins.nvim-lspconfig;

    event = ["BufReadPre" "BufNewFile"];
    config = ./lspconfig.lua;
  };

  nvim-treesitter = {
    package = vimPlugins.nvim-treesitter.withAllGrammars;
    dependencies = {
      nvim-ts-context-commentstring.package = vimPlugins.nvim-ts-context-commentstring;
    };

    event = ["BufReadPost" "BufNewFile"];
    config = {
      auto_install = false;
      highlight.enable = true;
      indent.enable = true;
      context_commentstring = {
        enable = true;
        enable_autocmd = false;
      };
    };
  };

  null-ls = {
    package = vimPlugins.null-ls-nvim;
    dependencies = {
      inherit (neo-tree-nvim.dependencies) plenary-nvim;
    };

    config = ./null-ls.lua;
  };

  bufferline-nvim = {
    package = vimPlugins.bufferline-nvim;
    dependencies = {
      inherit (lualine-nvim.dependencies) nvim-web-devicons;
      inherit catppuccin-nvim;
    };

    config = ./bufferline.lua;
  };

  telescope-nvim.package = vimPlugins.telescope-nvim;

  trouble-nvim = {
    package = vimPlugins.trouble-nvim;
    dependencies = {
      inherit (lualine-nvim.dependencies) nvim-web-devicons;
    };
  };

  which-key-nvim = {
    package = vimPlugins.which-key-nvim;
    event = "VeryLazy";
    config = {
      plugins = {
        spelling = true;
      };
    };
  };
}