forked from
lass.pds.lassul.us/superconfig
This repository has no description
4.7 kB
139 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 # undo stuff
18 undofile = {};
19 undolevels = 10000;
20 undoreload = 10000;
21 listchars = "tab:⇥ ,extends:❯,precedes:❮,nbsp:␣,trail:·,eol:↲";
22 };
23 extraConfigVim = ''
24 set et
25
26 " show special characters
27 set list
28
29 " match trailing whitespace
30 match EoLSpace /\s\+$/
31
32 " need to use lua to expand $HOME
33 lua vim.o.undodir = vim.fs.normalize('$HOME/.vim/undodir')
34 '';
35 keymaps = [
36 { mode = "n"; key = "<C-c>"; action = ":q<cr>"; }
37 { mode = "n"; key = "<Space>"; action = "<Nop>"; }
38 { mode = "n"; key = "<leader>u"; action = ":UndotreeToggle<cr>"; }
39 { mode = "n"; key = "<leader>sd"; action = ":colorscheme ayu-dark<cr>"; }
40 { mode = "n"; key = "<leader>sw"; action = ":colorscheme ayu-light<cr>"; }
41 { mode = [ "n" "v" ]; key = "<leader>cc"; action = ":CopilotChatOpen<cr>"; }
42 { mode = [ "n" "v" ]; key = "<leader>ce"; action = ":CopilotChatExplain<cr>"; }
43 { mode = [ "n" "v" ]; key = "<leader>cr"; action = ":CopilotChatReview<cr>"; }
44 { mode = [ "n" "v" ]; key = "<leader>cf"; action = ":CopilotChatFix<cr>"; }
45 { mode = [ "n" "v" ]; key = "<leader>cd"; action = ":CopilotChatDocs<cr>"; }
46 { mode = [ "n" "x" ]; key = "p"; action = "<Plug>(YankyPutAfter)"; }
47 { mode = [ "n" "x" ]; key = "P"; action = "<Plug>(YankyPutBefore)"; }
48 ];
49 plugins.web-devicons.enable = true;
50 plugins.telescope = {
51 enable = true;
52 keymaps = {
53 "<leader>b" = "buffers";
54 "<leader>ff" = "find_files";
55 "<leader>fg" = "live_grep";
56 "<leader>fh" = "help_tags";
57 "<leader>fp" = "yank_history";
58 };
59 };
60 plugins.lsp = {
61 enable = true;
62 servers = {
63 bashls.enable = true; # bash
64 nixd.enable = true; # nix
65 ruff-lsp.enable = true; # python
66 };
67 };
68 plugins.undotree = {
69 enable = true;
70 settings.SetFocusWhenToggle = true;
71 settings.DiffAutoOpen = true;
72 };
73 plugins.treesitter.enable = true;
74 plugins.copilot-cmp.enable = true;
75 plugins.copilot-lua.panel.enabled = false;
76 plugins.copilot-lua.suggestion.enabled = false;
77 plugins.luasnip.enable = true;
78 plugins.cmp = {
79 enable = true;
80 autoEnableSources = true;
81 settings = {
82 autoEnableSources = true;
83 experimental = { ghost_text = true; };
84 performance = {
85 debounce = 60;
86 fetchingTimeout = 200;
87 maxViewEntries = 30;
88 };
89 snippet = { expand = "luasnip"; };
90 formatting = { fields = [ "kind" "abbr" "menu" ]; };
91 sources = [
92 { name = "nvim_lsp"; }
93 { name = "emoji"; }
94 {
95 name = "buffer"; # text within current buffer
96 option.get_bufnrs.__raw = "vim.api.nvim_list_bufs";
97 keywordLength = 3;
98 }
99 {
100 name = "copilot"; # enable/disable copilot
101 }
102 {
103 name = "path"; # file system paths
104 keywordLength = 3;
105 }
106 {
107 name = "luasnip"; # snippets
108 keywordLength = 3;
109 }
110 ];
111
112 window = {
113 completion = { border = "solid"; };
114 documentation = { border = "solid"; };
115 };
116
117 mapping = {
118 "<Tab>" = "cmp.mapping.select_next_item()";
119 "<S-Tab>" = "cmp.mapping.select_prev_item()";
120 "<C-e>" = "cmp.mapping.abort()";
121 "<C-b>" = "cmp.mapping.scroll_docs(-4)";
122 "<C-f>" = "cmp.mapping.scroll_docs(4)";
123 "<C-Space>" = "cmp.mapping.complete()";
124 "<CR>" = "cmp.mapping.confirm({ select = true })";
125 "<S-CR>" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true })";
126 };
127 };
128 };
129 plugins.bufferline.enable = true;
130 plugins.which-key.enable = true;
131 plugins.yanky = {
132 enable = true;
133 enableTelescope = true;
134 };
135 plugins.comment.enable = true;
136 plugins.copilot-chat.enable = true;
137 };
138 };
139}