summary refs log tree commit diff stats
path: root/hm/nixvim/config.nix
blob: 24e5a337f430135486a6bd44623f0b81235cb5f8 (plain) (blame)
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
pkgs: {
  opts = {
    number = true;
    relativenumber = true;
    shiftwidth = 2;
    tabstop = 2;
    scrolloff = 999;

    textwidth = 83;
    linebreak = true;

    completeopt = ["menu" "menuone" "noselect"];
  };
  keymaps = [
    {
      mode = ["n" "i" "t"];
      key = "<A-h>";
      action = ''<C-\><C-N><C-w>h'';
    }
    {
      mode = ["n" "i" "t"];
      key = "<A-j>";
      action = ''<C-\><C-N><C-w>j'';
    }
    {
      mode = ["n" "i" "t"];
      key = "<A-k>";
      action = ''<C-\><C-N><C-w>k'';
    }
    {
      mode = ["n" "i" "t"];
      key = "<A-l>";
      action = ''<C-\><C-N><C-w>l'';
    }
    {
      key = "<A-t>";
      action = ":Neotree float reveal_force_cwd<cr>";
    }
    {
      key = "<A-b>";
      action = ":Neotree float buffers<cr>";
    }
    {
      key = "<A-s>";
      action = ":Neotree float git_status<cr>";
    }
  ];
  extraPlugins = with pkgs.vimPlugins; [
    vim-airline-themes
  ];
  plugins = {
    airline = {
      enable = true;
      settings = {
        powerline_fonts = true;
      };
    };
    cmp = {
      enable = true;
      settings = {
        snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end";
        mappings = {
          "<C-Space>" = "cmp.mapping.complete()";
          "<C-d>" = "cmp.mapping.scroll_docs(-4)";
          "<C-e>" = "cmp.mapping.close()";
          "<C-f>" = "cmp.mapping.scroll_docs(4)";
          "<CR>" = "cmp.mapping.confirm({ select = true })";
          "<S-Tab>" = "cmp.mapping(cmp.mapping.select_prev_item(), {'i', 's'})";
          "<Tab>" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})";
        };
        sources = [
          {name = "nvim_lsp";}
          {name = "path";}
          {
            name = "buffer";
            option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
          }
          {name = "git";}
          {name = "conventionalcommits";}
        ];
      };
    };
    cmp-path.enable = true;
    coq-nvim = {
      enable = false;
      settings = {
        auto_start = "shut-up";
      };
      installArtifacts = true;
    };
    dashboard = {
      enable = true;
    };
    lsp = {
      enable = true;
      servers = {
        nil_ls.enable = true;
        rust-analyzer = {
          enable = true;
          installCargo = true;
          installRustc = true;
        };
        ltex.enable = true;
        java-language-server.enable = true;
      };
    };
    lspkind = {
      enable = true;

      cmp = {
        enable = true;
        menu = {
          nvim_lsp = "[LSP]";
          nvim_lua = "[api]";
          path = "[path]";
          luasnip = "[snip]";
          buffer = "[buffer]";
          neorg = "[neorg]";
        };
      };
    };
    lsp-format = {
      enable = true;
    };
    luasnip.enable = true;
    quickmath.enable = true;
    treesitter = {
      enable = true;
      indent = true;
    };
    treesitter-context = {
      enable = true;
    };
    treesitter-refactor = {
      enable = true;
    };
    mini = {
      enable = true;
    };
    markdown-preview = {
      enable = true;
    };
    nix = {
      enable = true;
    };
    neo-tree = {
      enable = true;
      autoCleanAfterSessionRestore = true;
      closeIfLastWindow = true;
    };
    nvim-autopairs = {
      enable = true;
    };
    vim-css-color = {
      enable = true;
    };
    vimtex = {
      enable = true;
    };
  };
}