{ pkgs, lib, ... }: let in { home.packages = with pkgs; [ # Required clipboard provider xclip ]; programs.nixvim = { enable = true; viAlias = true; vimAlias = true; globals = { mapleader = " "; clipboard = "unnamedplus"; }; options = { autoindent = true; expandtab = true; foldlevel=20; guifont = "MesloLGS\ NF\ 10"; number = true; shiftwidth = 4; tabstop = 4; }; # https://github.com/pupbrained/nix-config/blob/29af4835f21940af51b86313c451fb572a29874a/pkgs/nixvim.nix#L8 maps.normal = { "ot" = "vs | te"; "op" = "NvimTreeToggle"; "o." = "Telescope file_browser"; "." = "Telescope find_files"; # cwd full sub-dir fuzzy find "of" = "Telescope live_grep"; # cwd search file "mo" = "Telescope harpoon marks"; # leacder + marks + open ; open harpoon marks in telescope "mr" = "lua require(\"harpoon.mark\").rm_file()"; # leader + mark + remove "ma" = "lua require(\"harpoon.mark\").add_file()"; # leader + mark + add }; plugins = { harpoon = { enable = true; }; nvim-tree = { enable = true; openOnSetup = true; }; nvim-autopairs = { enable = true; checkTs = true; }; treesitter = { enable = true; folding = true; indent = true; ensureInstalled = [ "rust" "toml" "lua" ]; }; treesitter-rainbow.enable = true; treesitter-refactor = { enable = true; #highlightCurrentScope.enable = true; navigation.enable = true; smartRename.enable = true; }; comment-nvim = { enable = true; toggler = { line = ""; block = ""; }; }; floaterm = { enable = true; position = "auto"; keymaps = { toggle = "t"; }; }; telescope.enable = true; rust-tools.enable = true; nvim-cmp.enable = true; cmp-nvim-lsp.enable = true; # Read settings here: https://github.com/mfussenegger/nvim-dap#Usage # See :help dap.txt, :help dap-mapping and :help dap-api. cmp-dap.enable = true; cmp-vsnip.enable = true; cmp-buffer.enable = true; cmp-nvim-lsp-signature-help.enable = true; cmp-nvim-lua.enable = true; cmp-path.enable = true; presence-nvim.enable = true; nix.enable = true; airline = { enable = true; powerline = true; }; }; extraConfigLua = builtins.readFile ./../rsrcs/nvim.lua; extraPlugins = with pkgs.vimPlugins; [ telescope-file-browser-nvim monokai-pro-nvim nvim-lspconfig vim-vsnip hop-nvim ]; }; }