summaryrefslogtreecommitdiff
path: root/modules/packages/nvf/_nvfConfig.nix
blob: dee75190ee2f67320d45882f5d28a9a9f4a3ae73 (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
{
  pkgs,
  lib,
  ...
}: {
  config.vim = {
    viAlias = true;
    vimAlias = true;

    lineNumberMode = "relNumber";

    options = {
      tabstop = lib.mkDefault 2;
      shiftwidth = 0;
      termguicolors = true;
    };

    keymaps = [
      {
        key = "<leader>w";
        mode = "n";
        silent = true;
        action = ":w<CR>";
      }
      {
        key = "<leader>x";
        mode = "n";
        silent = true;
        action = ":wq<CR>";
      }
      {
        key = "<leader>q";
        mode = "n";
        silent = true;
        action = ":q<CR>";
      }
      {
        key = "<leader>Q";
        mode = "n";
        silent = true;
        action = ":q!<CR>";
      }
      {
        key = "<leader>ff";
        mode = "n";
        silent = true;
        action = ":Telescope find_files<CR>";
      }
      {
        key = "<C-d>";
        mode = "n";
        silent = true;
        action = "<C-d>zz";
      }
      {
        key = "<C-u>";
        mode = "n";
        silent = true;
        action = "<C-u>zz";
      }
      {
        key = "<leader>n";
        mode = "n";
        silent = true;
        action = ":noh<CR>";
      }
    ];

    lsp = {
      enable = true;
    };

    languages = {
      enableTreesitter = true;

      nix = {
        enable = true;
        lsp.enable = true;
        lsp.servers = ["nixd"];
      };
      clang.enable = true;
      rust.enable = true;
      ruby.enable = true;
      java.enable = true;
    };

    autocomplete.nvim-cmp.enable = true;

    treesitter = {
      enable = true;
      # context.enable = true;
      highlight.enable = true;
    };

    telescope.enable = true;

    clipboard = {
      enable = true;
      providers.wl-copy.enable = true;
    };

    utility = {
      motion = {
        # hop.enable = true;
        # leap.enable = true;
        precognition.enable = true;
      };
    };

    visuals = {
      rainbow-delimiters.enable = true;
    };

    statusline.lualine.enable = true;
    git.gitsigns.enable = true;

    extraPlugins = {
      gruvbox-material = {
        package = pkgs.vimPlugins.gruvbox-material;
        setup = ''
          vim.o.background = "dark"
          vim.g.gruvbox_material_background = "hard"
          vim.cmd("colorscheme gruvbox-material")
        '';
      };
    };

    autocmds = [
      {
        event = ["InsertEnter"];
        command = "set norelativenumber";
      }
      {
        event = ["InsertLeave"];
        command = "set relativenumber";
      }
    ];
  };
}