This repository has no description
0

Configure Feed

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

Make neovim snappier

Ivan Ilak (Mar 14, 2026, 12:42 PM +0100) c7ecc82a e58e082b

+110 -286
-7
config/default.nix
··· 14 14 15 15 # Completion 16 16 ./plugins/cmp/cmp.nix 17 - ./plugins/cmp/lspkind.nix 18 17 ./plugins/cmp/autopairs.nix 19 18 ./plugins/cmp/schemastore.nix 20 19 ··· 51 50 52 51 # Git 53 52 ./plugins/git/gitsigns.nix 54 - ./plugins/git/neogit.nix 55 53 ./plugins/git/lazygit.nix 56 54 57 55 # Utils 58 56 ./plugins/utils/telescope.nix 59 - ./plugins/utils/whichkey.nix 60 - ./plugins/utils/extra_plugins.nix 61 57 ./plugins/utils/mini.nix 62 - ./plugins/utils/markdown-preview.nix 63 - ./plugins/utils/obsidian.nix 64 - ./plugins/utils/toggleterm.nix 65 58 ]; 66 59 }
+83 -123
config/plugins/cmp/cmp.nix
··· 1 1 { 2 - opts.completeopt = [ 3 - "menu" 4 - "menuone" 5 - "noselect" 6 - ]; 7 2 plugins = { 8 - cmp-emoji.enable = true; 9 - cmp = { 3 + blink-cmp = { 10 4 enable = true; 11 5 settings = { 12 - autoEnableSources = true; 13 - experimental = { 14 - ghost_text = false; 15 - }; 16 - performance = { 17 - debounce = 60; 18 - fetchingTimeout = 200; 19 - maxViewEntries = 30; 6 + completion = { 7 + ghost_text.enabled = false; 8 + accept.auto_brackets.enabled = true; 9 + menu.max_height = 30; 10 + menu.border = "solid"; 11 + documentation = { 12 + auto_show = true; 13 + window.border = "solid"; 14 + }; 20 15 }; 21 - snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end"; 22 - formatting.fields = [ 23 - "kind" 24 - "abbr" 25 - "menu" 26 - ]; 27 - sources = [ 28 - { 29 - name = "nvim_lsp"; 30 - priority = 11; 31 - } 32 - { 33 - name = "nvim_lsp_signature_help"; 34 - priority = 11; 35 - } 36 - { 37 - name = "buffer"; 38 - priority = 10; 39 - option.get_bufnrs.__raw = "vim.api.nvim_list_bufs"; 40 - keywordLength = 3; 41 - } 42 - { 43 - name = "path"; 44 - priority = 9; 45 - keywordLength = 3; 46 - } 47 - { 48 - name = "luasnip"; 49 - keywordLength = 3; 50 - } 51 - { 52 - name = "nvim_lua"; 53 - } 54 - ]; 16 + 17 + snippets.preset = "luasnip"; 55 18 56 - window = { 57 - completion = { 58 - border = "solid"; 59 - }; 60 - documentation = { 61 - border = "solid"; 19 + sources = { 20 + default = [ 21 + "lsp" 22 + "path" 23 + "snippets" 24 + "buffer" 25 + ]; 26 + providers = { 27 + buffer = { 28 + min_keyword_length = 3; 29 + score_offset = -3; 30 + }; 31 + path = { 32 + min_keyword_length = 3; 33 + }; 34 + snippets = { 35 + min_keyword_length = 3; 36 + max_items = 8; 37 + }; 62 38 }; 63 39 }; 64 40 65 - mapping = { 66 - "<Tab>" = "cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Select })"; 67 - "<S-Tab>" = "cmp.mapping.select_prev_item()"; 68 - "<esc>" = "cmp.mapping.abort()"; 69 - "<C-Space>" = "cmp.mapping.complete()"; 70 - "<CR>" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = false })"; 41 + keymap = { 42 + preset = "none"; 43 + "<Tab>" = [ 44 + "select_next" 45 + "fallback" 46 + ]; 47 + "<S-Tab>" = [ 48 + "select_prev" 49 + "fallback" 50 + ]; 51 + "<CR>" = [ 52 + "accept" 53 + "fallback" 54 + ]; 55 + "<C-Space>" = [ 56 + "show" 57 + ]; 58 + "<Esc>" = [ 59 + "cancel" 60 + "fallback" 61 + ]; 71 62 }; 72 63 73 - preselect = "cmp.PreselectMode.None"; 64 + appearance = { 65 + use_nvim_cmp_as_default = false; 66 + nerd_font_variant = "mono"; 67 + kind_icons = { 68 + Text = "󰊄"; 69 + Method = " "; 70 + Function = "󰡱 "; 71 + Constructor = " "; 72 + Field = " "; 73 + Variable = "󱀍 "; 74 + Class = " "; 75 + Interface = " "; 76 + Module = "󰕳 "; 77 + Property = " "; 78 + Unit = " "; 79 + Value = " "; 80 + Enum = " "; 81 + Keyword = " "; 82 + Snippet = " "; 83 + Color = " "; 84 + File = ""; 85 + Reference = " "; 86 + Folder = " "; 87 + EnumMember = " "; 88 + Constant = " "; 89 + Struct = " "; 90 + Event = " "; 91 + Operator = " "; 92 + TypeParameter = " "; 93 + }; 94 + }; 74 95 }; 75 96 }; 76 - cmp-nvim-lsp.enable = true; # lsp 77 - cmp-buffer.enable = true; 78 - cmp-path.enable = true; # file system paths 79 - cmp_luasnip.enable = true; # snippets 80 - cmp-cmdline.enable = false; # autocomplete for cmdline 81 97 }; 82 - extraConfigLua = '' 83 - luasnip = require("luasnip") 84 - kind_icons = { 85 - Text = "󰊄", 86 - Method = " ", 87 - Function = "󰡱 ", 88 - Constructor = " ", 89 - Field = " ", 90 - Variable = "󱀍 ", 91 - Class = " ", 92 - Interface = " ", 93 - Module = "󰕳 ", 94 - Property = " ", 95 - Unit = " ", 96 - Value = " ", 97 - Enum = " ", 98 - Keyword = " ", 99 - Snippet = " ", 100 - Color = " ", 101 - File = "", 102 - Reference = " ", 103 - Folder = " ", 104 - EnumMember = " ", 105 - Constant = " ", 106 - Struct = " ", 107 - Event = " ", 108 - Operator = " ", 109 - TypeParameter = " ", 110 - } 111 - 112 - local cmp = require'cmp' 113 - 114 - -- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). 115 - cmp.setup.cmdline({'/', "?" }, { 116 - sources = { 117 - { name = 'buffer' } 118 - } 119 - }) 120 - 121 - -- Set configuration for specific filetype. 122 - cmp.setup.filetype('gitcommit', { 123 - sources = cmp.config.sources({ 124 - { name = 'cmp_git' }, -- You can specify the `cmp_git` source if you were installed it. 125 - }, { 126 - { name = 'buffer' }, 127 - }) 128 - }) 129 - 130 - -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). 131 - cmp.setup.cmdline(':', { 132 - sources = cmp.config.sources({ 133 - { name = 'path' } 134 - }, { 135 - { name = 'cmdline' } 136 - }), 137 - }) ''; 138 98 }
-14
config/plugins/cmp/lspkind.nix
··· 1 - { 2 - plugins.lspkind = { 3 - enable = true; 4 - settings = { 5 - symbolMap = { 6 - Copilot = " "; 7 - }; 8 - extraOptions = { 9 - maxwidth = 50; 10 - ellipsis_char = "..."; 11 - }; 12 - }; 13 - }; 14 - }
+1 -1
config/plugins/editor/fold.nix
··· 4 4 lazyLoad = { 5 5 enable = true; 6 6 settings = { 7 - event = "BufReadPost"; 7 + event = "CursorHold"; 8 8 }; 9 9 }; 10 10 settings = {
-3
config/plugins/editor/trailblazer.nix
··· 1 - _: { 2 - plugins.trailblazer.enable = true; 3 - }
+1 -1
config/plugins/git/gitsigns.nix
··· 4 4 lazyLoad = { 5 5 enable = true; 6 6 settings = { 7 - event = "BufReadPost"; 7 + event = "CursorHold"; 8 8 }; 9 9 }; 10 10 settings = {
-11
config/plugins/git/neogit.nix
··· 1 - _: { 2 - plugins.neogit = { 3 - enable = false; 4 - lazyLoad = { 5 - enable = true; 6 - settings = { 7 - cmd = "Neogit"; 8 - }; 9 - }; 10 - }; 11 - }
+1 -2
config/plugins/themes/default.nix
··· 21 21 no_underline = false; 22 22 transparent_background = true; 23 23 integrations = { 24 - cmp = true; 24 + blink_cmp = true; 25 25 notify = true; 26 26 gitsigns = true; 27 27 neotree = true; ··· 40 40 indent_blankline.enabled = true; 41 41 mini = { 42 42 enabled = true; 43 - indentscope_color = "rosewater"; 44 43 }; 45 44 native_lsp = { 46 45 enabled = true;
-6
config/plugins/utils/extra_plugins.nix
··· 1 - { pkgs, ... }: 2 - { 3 - extraPlugins = with pkgs.vimPlugins; [ 4 - nvim-web-devicons 5 - ]; 6 - }
-29
config/plugins/utils/markdown-preview.nix
··· 1 - _: { 2 - plugins = { 3 - markdown-preview = { 4 - enable = false; 5 - settings = { 6 - browser = "firefox"; 7 - echo_preview_url = 1; 8 - port = "6969"; 9 - preview_options = { 10 - disable_filename = 1; 11 - disable_sync_scroll = 1; 12 - sync_scroll_type = "middle"; 13 - }; 14 - theme = "dark"; 15 - }; 16 - }; 17 - }; 18 - 19 - keymaps = [ 20 - { 21 - mode = "n"; 22 - key = "<leader>mp"; 23 - action = "<cmd>MarkdownPreview<cr>"; 24 - options = { 25 - desc = "Toggle Markdown Preview"; 26 - }; 27 - } 28 - ]; 29 - }
-6
config/plugins/utils/mini.nix
··· 3 3 enable = true; 4 4 5 5 modules = { 6 - indentscope = { 7 - symbol = "│"; 8 - options = { 9 - try_as_border = true; 10 - }; 11 - }; 12 6 surround = { }; 13 7 }; 14 8 };
-25
config/plugins/utils/obsidian.nix
··· 1 - { 2 - plugins.obsidian = { 3 - enable = false; 4 - settings = { 5 - workspaces = [ 6 - { 7 - name = "SecondBrain"; 8 - path = "~/projects/personal/SecondBrain"; 9 - } 10 - ]; 11 - templates = { 12 - subdir = "templates"; 13 - dateFormat = "%Y-%m-%d"; 14 - timeFormat = "%H:%M"; 15 - substitutions = { }; 16 - }; 17 - 18 - dailyNotes = { 19 - folder = "0_Daily_Notes"; 20 - dateFormat = "%Y-%m-%d"; 21 - aliasFormat = "%B %-d, %Y"; 22 - }; 23 - }; 24 - }; 25 - }
+4
config/plugins/utils/telescope.nix
··· 12 12 fzf-native = { 13 13 enable = true; 14 14 }; 15 + ui-select = { 16 + enable = true; 17 + }; 15 18 }; 16 19 settings = { 17 20 defaults = { ··· 226 229 } 227 230 } 228 231 } 232 + require("telescope").load_extension("ui-select") 229 233 ''; 230 234 }
-53
config/plugins/utils/toggleterm.nix
··· 1 - _: { 2 - plugins.toggleterm = { 3 - enable = true; 4 - lazyLoad = { 5 - settings = { 6 - cmd = "ToggleTerm"; 7 - keys = [ 8 - "<leader>t" 9 - "<leader>tf" 10 - "<leader>tv" 11 - "<leader>th" 12 - ]; 13 - }; 14 - }; 15 - settings = { 16 - size = 20; 17 - }; 18 - }; 19 - keymaps = [ 20 - { 21 - mode = "n"; 22 - key = "<leader>t"; 23 - action = "<cmd>ToggleTerm<cr>"; 24 - options = { 25 - desc = "Toggle Terminal Window"; 26 - }; 27 - } 28 - { 29 - mode = "n"; 30 - key = "<leader>tv"; 31 - action = "<cmd>ToggleTerm direction=vertical<cr>"; 32 - options = { 33 - desc = "Toggle Vertical Terminal Window"; 34 - }; 35 - } 36 - { 37 - mode = "n"; 38 - key = "<leader>th"; 39 - action = "<cmd>ToggleTerm direction=horizontal<cr>"; 40 - options = { 41 - desc = "Toggle Horizontal Terminal Window"; 42 - }; 43 - } 44 - { 45 - mode = "n"; 46 - key = "<leader>tf"; 47 - action = "<cmd>ToggleTerm direction=float<cr>"; 48 - options = { 49 - desc = "Toggle Floating Terminal Window"; 50 - }; 51 - } 52 - ]; 53 - }
-5
config/plugins/utils/whichkey.nix
··· 1 - { 2 - plugins.which-key = { 3 - enable = false; 4 - }; 5 - }
+20
config/settings.nix
··· 4 4 }: 5 5 { 6 6 config = { 7 + performance.byteCompileLua = { 8 + enable = true; 9 + configs = true; 10 + initLua = true; 11 + plugins = true; 12 + }; 13 + 14 + luaLoader.enable = true; 15 + 7 16 diagnostic.settings.virtual_text = false; 8 17 9 18 extraConfigLuaPre = ··· 22 31 ]; 23 32 providers.wl-copy.enable = !pkgs.stdenv.isDarwin; 24 33 providers.xclip.enable = true; 34 + }; 35 + 36 + globals = { 37 + loaded_netrw = 1; 38 + loaded_netrwPlugin = 1; 39 + loaded_tutor_mode_plugin = 1; 40 + loaded_gzip = 1; 41 + loaded_zip = 1; 42 + loaded_zipPlugin = 1; 43 + loaded_tar = 1; 44 + loaded_tarPlugin = 1; 25 45 }; 26 46 27 47 opts = {