{ lib, config, ... }: { options = { custom.neovim.enable = lib.mkEnableOption "My neovim config"; }; config = lib.mkIf config.custom.neovim.enable { home = { sessionVariables = { EDITOR = "nvim"; }; }; programs.nixvim = { enable = true; plugins = { dropbar.enable = true; lspconfig.enable = true; guess-indent.enable = true; oil.enable = true; mini-statusline.enable = true; mini-pairs.enable = true; mini-pick.enable = true; mini-diff.enable = true; mini-indentscope.enable = true; mini-surround.enable = true; ts-autotag.enable = true; blink-cmp = { enable = true; settings = { signature = { enabled = true; }; }; }; treesitter = { enable = true; highlight.enable = true; indent.enable = true; }; harpoon.enable = true; }; keymaps = [ { action = "Oil"; key = "o"; } { action = "lua require('mini.pick').builtin.files()"; key = "f"; } { action = "lua require('mini.pick').builtin.grep_live()"; key = "g"; } { action = "lua require('mini.pick').builtin.help()"; key = "h"; } { action = "lua require('mini.pick').builtin.resume()"; key = "r"; } { action = "lua vim.lsp.buf.format()"; key = "i"; } { action = "lua vim.lsp.buf.code_action()"; key = "a"; } { action = "lua vim.diagnostic.goto_prev({ float = true })"; key = "[d"; } { action = "lua vim.diagnostic.goto_next({ float = true })"; key = "]d"; } { action = "lua vim.diagnostic.setqflist()"; key = "d"; } { action = "lua require('harpoon'):list():add()"; key = "k"; } { action = "lua require('harpoon'):list():select(1)"; key = ""; } { action = "lua require('harpoon'):list():select(2)"; key = ""; } { action = "lua require('harpoon'):list():select(3)"; key = ""; } { action = "lua require('harpoon'):list():select(4)"; key = ""; } { action = "lua require('harpoon').ui:toggle_quick_menu(require('harpoon'):list())"; key = "j"; } { action = "CopyRelativePath"; key = "p"; } ]; globals.mapleader = " "; opts = { number = true; relativenumber = true; ignorecase = true; smartcase = true; swapfile = false; exrc = true; }; colorschemes.catppuccin.enable = true; clipboard.register = "unnamedplus"; userCommands = { CopyRelativePath = { command = "call setreg('+', expand('%'))"; }; }; lsp.servers = { basedpyright.enable = true; gopls.enable = true; nil_ls.enable = true; rust_analyzer.enable = true; html.enable = true; jsonls.enable = true; yamlls.enable = true; cssls.enable = true; tailwindcss.enable = true; vtsls.enable = true; }; }; }; }