{ globals = { mapleader = " "; }; opts = { number = true; relativenumber = true; tabstop = 2; shiftwidth = 2; expandtab = true; smartindent = true; scrolloff = 4; undofile = true; }; extraConfigLua = '' vim.o.undodir = vim.fn.expand("$HOME/.local/share/nvim/undo") ''; keymaps = [ { key = ""; action = ''"+y''; options.desc = "copy to clipboard"; } { key = "gl"; action = "g$"; } { key = "gh"; action = "g0"; } { key = "q"; action = ":bd"; options.desc = "close buffer"; } { key = "ggs"; action = ":Gitsigns stage_hunk"; options.desc = "git stage hunk"; } { key = "ggr"; action = ":LazyGit"; options.desc = "git restore hunk"; } { key = "ggb"; action = ":Gitsigns blame"; options.desc = "show git blame"; } { key = "ggg"; action = ":LazyGit"; options.desc = "open lazy git"; } ]; plugins = { bufferline.enable = true; surround.enable = true; comment.enable = true; markdown-preview.enable = true; treesitter.enable = true; telescope = { enable = true; keymaps = { "fg" = "live_grep"; "/" = "live_grep"; "ff" = "find_files"; "fb" = "buffers"; "fh" = "help_tags"; ":" = "commands"; }; }; lsp = { enable = true; servers = { tsserver.enable = true; nixd.enable = true; }; keymaps = { lspBuf = { "K" = "hover"; "a" = "code_action"; "gd" = "definition"; }; diagnostic = { "e" = "open_float"; "ca" = "code_action"; "" = "code_action"; "cr" = "rename"; "gd" = "definition"; }; diagnostic = { "ch" = "open_float"; "" = "open_float"; }; }; }; cmp = { enable = true; autoEnableSources = true; }; cmp-nvim-lsp.enable = true; cmp-path.enable = true; ts-autotag.enable = true; gitsigns.enable = true; git-worktree = { enable = true; enableTelescope = true; }; lazygit.enable = true; which-key.enable = true; dap = { enable = true; extensions.dap-ui.enable = true; }; harpoon = { enable = true; keymaps = { addFile = "ha"; toggleQuickMenu = "hf"; navNext = "n"; }; }; vim-css-color.enable = true; }; }