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