This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

superconfig / tools / nvim.nix
4.7 kB 140 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 harper-ls.enable = true; # comments 67 }; 68 }; 69 plugins.undotree = { 70 enable = true; 71 settings.SetFocusWhenToggle = true; 72 settings.DiffAutoOpen = true; 73 }; 74 plugins.treesitter.enable = true; 75 plugins.copilot-cmp.enable = true; 76 plugins.copilot-lua.panel.enabled = false; 77 plugins.copilot-lua.suggestion.enabled = false; 78 plugins.luasnip.enable = true; 79 plugins.cmp = { 80 enable = true; 81 autoEnableSources = true; 82 settings = { 83 autoEnableSources = true; 84 experimental = { ghost_text = true; }; 85 performance = { 86 debounce = 60; 87 fetchingTimeout = 200; 88 maxViewEntries = 30; 89 }; 90 snippet = { expand = "luasnip"; }; 91 formatting = { fields = [ "kind" "abbr" "menu" ]; }; 92 sources = [ 93 { name = "nvim_lsp"; } 94 { name = "emoji"; } 95 { 96 name = "buffer"; # text within current buffer 97 option.get_bufnrs.__raw = "vim.api.nvim_list_bufs"; 98 keywordLength = 3; 99 } 100 { 101 name = "copilot"; # enable/disable copilot 102 } 103 { 104 name = "path"; # file system paths 105 keywordLength = 3; 106 } 107 { 108 name = "luasnip"; # snippets 109 keywordLength = 3; 110 } 111 ]; 112 113 window = { 114 completion = { border = "solid"; }; 115 documentation = { border = "solid"; }; 116 }; 117 118 mapping = { 119 "<Tab>" = "cmp.mapping.select_next_item()"; 120 "<S-Tab>" = "cmp.mapping.select_prev_item()"; 121 "<C-e>" = "cmp.mapping.abort()"; 122 "<C-b>" = "cmp.mapping.scroll_docs(-4)"; 123 "<C-f>" = "cmp.mapping.scroll_docs(4)"; 124 "<C-Space>" = "cmp.mapping.complete()"; 125 "<CR>" = "cmp.mapping.confirm({ select = true })"; 126 "<S-CR>" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true })"; 127 }; 128 }; 129 }; 130 plugins.bufferline.enable = true; 131 plugins.which-key.enable = true; 132 plugins.yanky = { 133 enable = true; 134 enableTelescope = true; 135 }; 136 plugins.comment.enable = true; 137 plugins.copilot-chat.enable = true; 138 }; 139 }; 140}