{ pkgs, lib, ... }: let in { programs.nixvim = { enable = true; viAlias = true; vimAlias = true; globals = { mapleader = " "; }; 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"; "o." = "Telescope file_browser"; "op" = "NvimTreeToggle"; }; plugins = { telescope = { enable = true; }; nvim-tree = { enable = true; openOnSetup = true; }; presence-nvim = { enable = 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"; }; }; 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; 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 hop-nvim ]; }; }