{pkgs, ...}: { vim = { extraPlugins = with pkgs.vimPlugins; { harpoon2 = { package = harpoon2; setup = ''require("harpoon"):setup()''; }; }; fzf-lua = { enable = true; profile = "telescope"; }; filetree.nvimTree = { enable = true; setupOpts = { filters.dotfiles = false; git.enable = true; renderer.group_empty = true; }; }; session.nvim-session-manager.enable = true; keymaps = [ # Harpoon {key = "ha"; mode = ["n"]; lua = true; action = ''function() require("harpoon"):list():add() end''; desc = "Harpoon add";} {key = "hh"; mode = ["n"]; lua = true; action = ''function() local h = require("harpoon") h.ui:toggle_quick_menu(h:list()) end''; desc = "Harpoon menu";} {key = "1"; mode = ["n"]; lua = true; action = ''function() require("harpoon"):list():select(1) end''; desc = "Harpoon file 1";} {key = "2"; mode = ["n"]; lua = true; action = ''function() require("harpoon"):list():select(2) end''; desc = "Harpoon file 2";} {key = "3"; mode = ["n"]; lua = true; action = ''function() require("harpoon"):list():select(3) end''; desc = "Harpoon file 3";} {key = "4"; mode = ["n"]; lua = true; action = ''function() require("harpoon"):list():select(4) end''; desc = "Harpoon file 4";} # FZF-lua {key = "ff"; mode = ["n"]; action = "FzfLua files"; desc = "Find Files";} {key = "fg"; mode = ["n"]; action = "FzfLua live_grep"; desc = "Live Grep";} {key = "fb"; mode = ["n"]; action = "FzfLua buffers"; desc = "Buffer List";} {key = "fh"; mode = ["n"]; action = "FzfLua help_tags"; desc = "Help Tags";} {key = "fo"; mode = ["n"]; action = "FzfLua oldfiles"; desc = "Recent Files";} {key = "fn"; mode = ["n"]; action = "Noice"; desc = "Notifications";} # Nvim-tree {key = ""; mode = ["n"]; action = "NvimTreeToggle"; desc = "File Tree";} {key = "e"; mode = ["n"]; action = "NvimTreeFindFile"; desc = "File Tree (find current file)";} # Sessions {key = "fp"; mode = ["n"]; action = "SessionManager load_session"; desc = "Session List";} ]; }; }