{ inputs, pkgs, config, lib, theme, ... }: { imports = [ inputs.nixvim.homeManagerModules.nixvim ] ++ lib.optional (builtins.isString theme) ../../../../stylix/${theme}/home-manager/nixvim.nix; programs.nixvim = { enable = true; viAlias = true; vimAlias = true; globals.mapleader = " "; globals.maplocalleader = " "; options = { number = true; shiftwidth = 2; # Indent wrapped text. breakindent = true; colorcolumn = "100"; # This is the default value. `:help cot` to see the available options. completeopt = "menu,preview"; cursorline = true; }; plugins = { telescope = { enable = true; extensions.frecency.enable = true; extensions.fzf-native.enable = true; keymaps = { "" = { action = "find_files"; desc = "Search files by name"; }; "s" = { action = "live_grep"; desc = "Search by live grep"; }; "b" = { action = "buffers"; desc = "Search open [B]uffers by file name"; }; "h" = { action = "help_tags"; desc = "Search [H]elp"; }; "w" = { action = "grep_string"; desc = "Search for [W]ord under cursor"; }; "g" = { action = "buffers"; desc = "Search [G]it files"; }; "r" = { action = "oldfiles"; desc = "Search [R]ecently opened files by name"; }; }; }; lsp = { enable = true; servers = { rust-analyzer = { enable = true; installCargo = true; installRustc = true; }; nixd.enable = true; pylsp.enable = true; html.enable = true; cssls.enable = true; bashls.enable = true; }; }; nvim-cmp = { enable = true; autoEnableSources = true; sources = [ { name = "nvim_lsp"; } { name = "path"; } { name = "buffer"; } ]; }; }; colorschemes = { tokyonight.enable = true; gruvbox.enable = true; oxocarbon.enable = true; nord.enable = true; catppuccin.enable = true; kanagawa.enable = true; dracula.enable = true; }; extraPlugins = with pkgs.vimPlugins; [ everforest ]; }; }