summaryrefslogtreecommitdiff
path: root/common/home/programs/nixvim/default.nix
blob: f7352d48b49a5706524ed95aefbc3c51496a5d3b (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
{ pkgs, ... }:
{
  enable = true;
  defaultEditor = true;

  enableMan = true;

  package = pkgs.unstable.neovim-unwrapped;

  extraConfigLua = ''
    local signs = {
    	Error = "󰀨 ",
    	Warn  = " ",
    	Hint  = " ",
    	Info  = " "
    }

    for type, icon in pairs(signs) do
    	local hl = "DiagnosticSign" .. type
    	vim.fn.sign_define(
    		hl,
    		{
    			text = icon,
    			texthl = hl,
    			numhl = hl
    		}
    	)
    end
  '';

  diagnostics = {
    virtual_text = {
      prefix = "󰬨";
    };
  };

  opts = {
    mouse = "a";
    number = true;
    softtabstop = 0;
    expandtab = false;
    tabstop = 2;
    shiftwidth = 2;
    smartindent = true;
    list = true;
    listchars = {
      tab = "> ";
      eol = "¬";
      trail = "·";
      nbsp = "•";
    };
    splitright = true;
    splitbelow = true;
    showcmd = true;
    wildmenu = true;
    hlsearch = true;
    autoread = true;
    swapfile = false;
  };

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

  colorschemes.base16 = {
    enable = true;
    colorscheme = "gruvbox-dark-pale";
  };

  plugins = import ./plugins/default.nix { inherit pkgs; };

  globals = {
    mapleader = ",";
  };

  keymaps = [
    {
      key = "<leader>tf";
      action = "<cmd>NvimTreeToggle<cr>";
      mode = "n";
    }
    {
      key = "<leader>f";
      action = "<cmd>lua require('telescope.builtin').find_files()<cr>";
      mode = "n";
    }
    {
      key = "<space>d";
      action = "<cmd>lua vim.diagnostic.open_float()<cr>";
      mode = "n";
    }
  ];
}