{ pkgs, ... }: { # ToggleTerm: Terminal emulator inside Neovim # Provides floating, horizontal, and vertical terminal windows. programs.nixvim.plugins.toggleterm = { enable = true; settings = { size = 20; open_mapping = "[[]]"; direction = "float"; float_opts = { border = "single"; width = 200; height = 40; }; }; }; programs.nixvim.keymaps = [ { mode = "n"; key = "h"; action.__raw = '' function() require("toggleterm").toggle(1, 10, vim.loop.cwd(), "horizontal") end ''; options.desc = "Toggle terminal (horizontal)"; } { mode = "n"; key = "v"; action.__raw = '' function() require("toggleterm").toggle(2, 60, vim.loop.cwd(), "vertical") end ''; options.desc = "Toggle terminal (vertical)"; } { mode = "n"; key = "ft"; action.__raw = '' function() require("toggleterm").toggle(3, 20, vim.loop.cwd(), "float") end ''; options.desc = "Toggle terminal (float)"; } { mode = "t"; key = ""; action = "ToggleTerm"; options.desc = "Toggle terminal"; } { mode = "t"; key = ""; action = "v"; options.desc = "Exit terminal and enter visual mode"; } ]; }