{ ... }: { programs.nixvim = { extraFiles = { "lua/treeutils.lua" = { source = ./treeutils.lua; }; }; extraConfigLua = '' function _G.launch_find_files_wrapped() -- Try custom function first local handled = require('treeutils').launch_find_files() if handled == "default" then -- If custom function didn't handle it, execute default behavior local default_key = vim.api.nvim_replace_termcodes('', true, true, true) vim.api.nvim_feedkeys(default_key, 'n', false) end end ''; keymaps = [ ## Go to current buffer's file in nvim-tree { mode = [ "n" ]; key = ",n"; action = ":NvimTreeFindFile"; } ## Toggle nvim-tree visibility { mode = [ "n" ]; key = ",m"; action = ":NvimTreeToggle"; } ## Search current path { mode = [ "n" ]; key = ""; action = "lua launch_find_files_wrapped()"; options = { noremap = true; }; } { mode = [ "n" ]; key = ""; action = "lua require('treeutils').launch_live_grep()"; options = { noremap = true; }; } ]; plugins.nvim-tree = { enable = true; actions = { removeFile = { closeWindow = false; }; }; ## Keep tree open if already open when opening a tab tab = { sync = { open = true; close = true; }; }; view = { width = 30; }; renderer = { groupEmpty = true; }; git = { enable = true; ignore = false; timeout = 500; }; }; }; }