summaryrefslogtreecommitdiff
path: root/programs/neovim/config.nix
blob: ae1024371f98c01a5e9b6f84e754763678d1223f (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
{
  config,
  inputs,
}:
inputs.self.lib.lua.fmt {
  # Width of tabs in the editor
  tabwidth = 4;
  # If tabs should be expanded to spaces
  expandtab = false;
  keys = {
    # NeoVIM leader key
    leader = " ";
    # Keybind to remove active hilighted content
    noh = "<leader>h";
    menus = {
      # Open file browser
      browser = "<leader>e";
      # Show active buffers
      buffers = "<leader>fb";
      # Show LSP errors
      error = "<leader>t";
      # Find files in working directory
      find = "<leader>ff";
      # Grep files in working directory
      grep = "<leader>fg";
      # Search help menu
      help = "<leader>fh";
      # Voew undo tree
      undo = "<leader>u";
    };
    lsp = {
      # Open LSP hover menu on a value
      hover = "K";
      # Perform an LSP action on a value
      action = "<leader>la";
      # View all references of a value
      references = "<leader>lr";
      # Rename current and all references of a value
      rename = "<leader>ln";
    };
    cmp = {
      # Select previous value in completion engine
      prev = "<C-p>";
      # Select next value in completion engine
      next = "<C-n>";
      # Confirm current value in completion engine
      confirm = "<CR>";
      # Auto complete using completion engine
      complete = "<C-space>";
    };
  };
  # list of lsp servers to load
  lsps = {
    clangd = {};
    jdtls = {};
    kotlin_language_server = {};
    phpactor = {};
    rust_analyzer = {};
    ts_ls = {};
    zls = {};
  };
  highlight = {
    # max file size in KiB to attempt to parse
    max_size = 1024;
  };
  # colorscheme
  theme = {
    colors = {
      base00 = "#${config.theme.colors.bg}";
      base01 = "#${config.theme.colors.surface.bg}";
      base02 = "#${config.theme.colors.surface.bg}";
      base03 = "#${config.theme.colors.bright.white}";
      base04 = "#${config.theme.colors.bright.black}";
      base05 = "#${config.theme.colors.fg}";
      base06 = "#${config.theme.colors.bright.white}";
      base07 = "#${config.theme.colors.hover.bg}";
      base08 = "#${config.theme.colors.bright.red}";
      base09 = "#${config.theme.colors.bright.yellow}";
      base0A = "#${config.theme.colors.bright.yellow}";
      base0B = "#${config.theme.colors.bright.green}";
      base0C = "#${config.theme.colors.bright.cyan}";
      base0D = "#${config.theme.colors.bright.blue}";
      base0E = "#${config.theme.colors.bright.magenta}";
      base0F = "#${config.theme.colors.normal.yellow}";
    };
    transparent = true;
  };
  # max column width
  col = {
    # show a bar at `width` characters
    show = true;
    width = 80;
  };
}