This repository has no description
5.9 kB
217 lines
1{ inputs, ... }:
2{
3 perSystem =
4 { system, ... }:
5 {
6 packages.nvim = inputs.nixvim.legacyPackages.${system}.makeNixvim {
7 vimAlias = true;
8 colorschemes.ayu = {
9 enable = true;
10 settings.overrides = {
11 EoLSpace = {
12 bg = "#883333";
13 };
14 };
15 };
16 globals.mapleader = " ";
17 opts = {
18 mouse = "a";
19 number = true;
20 shiftwidth = 2;
21 clipboard = "unnamedplus";
22 # undo stuff
23 undofile = { };
24 undolevels = 10000;
25 undoreload = 10000;
26 listchars = "tab:⇥ ,extends:❯,precedes:❮,nbsp:␣,trail:·,eol:↲";
27 };
28 extraConfigVim = ''
29 set et
30
31 " show special characters
32 set list
33
34 " match trailing whitespace
35 match EoLSpace /\s\+$/
36
37 " need to use lua to expand $HOME
38 lua vim.o.undodir = vim.fs.normalize('$HOME/.vim/undodir')
39 '';
40 keymaps = [
41 {
42 mode = "i";
43 key = "<C-p>";
44 action = "<Nop>";
45 }
46 {
47 mode = "i";
48 key = "<C-n>";
49 action = "<Nop>";
50 }
51 {
52 mode = "n";
53 key = "<C-c>";
54 action = ":q<cr>";
55 }
56 {
57 mode = "n";
58 key = "<Space>";
59 action = "<Nop>";
60 }
61 {
62 mode = "n";
63 key = "<leader>u";
64 action = ":UndotreeToggle<cr>";
65 }
66 {
67 mode = "n";
68 key = "<leader>sd";
69 action = ":colorscheme ayu-dark<cr>";
70 }
71 {
72 mode = "n";
73 key = "<leader>sw";
74 action = ":colorscheme ayu-light<cr>";
75 }
76 {
77 mode = [
78 "n"
79 "v"
80 ];
81 key = "<leader>cc";
82 action = ":CopilotChatOpen<cr>";
83 }
84 {
85 mode = [
86 "n"
87 "v"
88 ];
89 key = "<leader>ce";
90 action = ":CopilotChatExplain<cr>";
91 }
92 {
93 mode = [
94 "n"
95 "v"
96 ];
97 key = "<leader>cr";
98 action = ":CopilotChatReview<cr>";
99 }
100 {
101 mode = [
102 "n"
103 "v"
104 ];
105 key = "<leader>cf";
106 action = ":CopilotChatFix<cr>";
107 }
108 {
109 mode = [
110 "n"
111 "v"
112 ];
113 key = "<leader>cd";
114 action = ":CopilotChatDocs<cr>";
115 }
116 {
117 mode = [
118 "n"
119 "x"
120 ];
121 key = "p";
122 action = "<Plug>(YankyPutAfter)";
123 }
124 {
125 mode = [
126 "n"
127 "x"
128 ];
129 key = "P";
130 action = "<Plug>(YankyPutBefore)";
131 }
132 ];
133 plugins.web-devicons.enable = true;
134 plugins.telescope = {
135 enable = true;
136 keymaps = {
137 "<leader>b" = "buffers";
138 "<leader>ff" = "find_files";
139 "<leader>fg" = "live_grep";
140 "<leader>fh" = "help_tags";
141 "<leader>fp" = "yank_history";
142 };
143 };
144 plugins.lsp-format.enable = true;
145 plugins.lsp = {
146 enable = true;
147 servers = {
148 bashls.enable = true; # bash
149 nixd.enable = true; # nix
150 ruff-lsp.enable = true; # python
151 harper-ls.enable = true; # comments
152 jsonls.enable = true; # json
153 };
154 };
155 plugins.undotree = {
156 enable = true;
157 settings.SetFocusWhenToggle = true;
158 };
159 plugins.treesitter.enable = true;
160 plugins.copilot-cmp.enable = true;
161 plugins.copilot-lua.panel.enabled = false;
162 plugins.copilot-lua.suggestion.enabled = false;
163 plugins.cmp_yanky.enable = true;
164 plugins.cmp = {
165 enable = true;
166 autoEnableSources = true;
167 settings = {
168 experimental = {
169 ghost_text = true;
170 };
171 sources = [
172 { name = "nvim_lsp"; }
173 { name = "emoji"; }
174 {
175 name = "buffer"; # text within current buffer
176 option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
177 keywordLength = 2;
178 }
179 {
180 name = "copilot"; # enable copilot
181 }
182 {
183 name = "path"; # file system paths
184 keywordLength = 3;
185 }
186 { name = "cmp_yanky"; }
187 ];
188
189 mapping = {
190 "<Tab>" = "cmp.mapping.select_next_item()";
191 "<S-Tab>" = "cmp.mapping.select_prev_item()";
192 "<C-n>" = "cmp.mapping.select_next_item()";
193 "<C-p>" = "cmp.mapping.select_prev_item()";
194 "<C-e>" = "cmp.mapping.abort()";
195 "<C-b>" = "cmp.mapping.scroll_docs(-4)";
196 "<C-f>" = "cmp.mapping.scroll_docs(4)";
197 "<C-Space>" = "cmp.mapping.complete()";
198 "<CR>" = "cmp.mapping.confirm({ select = true })";
199 "<S-CR>" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true })";
200 };
201 };
202 };
203 plugins.none-ls = {
204 enable = true;
205 sources.formatting.treefmt.enable = true;
206 };
207 plugins.bufferline.enable = true;
208 plugins.which-key.enable = true;
209 plugins.yanky = {
210 enable = true;
211 enableTelescope = true;
212 };
213 plugins.comment.enable = true;
214 plugins.copilot-chat.enable = true;
215 };
216 };
217}