{ inputs, config, lib, pkgs, ... }: let cfg = config.hm.editors.nixvim; in { imports = [ inputs.nixvim.homeModules.nixvim ]; options.hm.editors.nixvim.enable = lib.mkEnableOption "enables nixvim config framework"; config = lib.mkIf cfg.enable { programs.nixvim = { enable = true; package = inputs.neovim-nightly-overlay.packages.${pkgs.stdenv.hostPlatform.system}.default; viAlias = true; vimAlias = true; defaultEditor = true; waylandSupport = true; colorschemes.gruvbox.enable = true; globals.mapleader = " "; keymaps = [ { # mode = [ "n" "i" "v" ]; key = ""; action = ""; options.silent = true; } { mode = "n"; key = "ff"; action = "Telescope find_files"; options.desc = "Find Files"; } { mode = "n"; key = "fg"; action = "Telescope live_grep"; options.desc = "Live Grep"; } { mode = "n"; key = "ma"; action = "MCpattern"; options.desc = "Select all matches of pattern"; } { mode = "n"; key = "ha"; action = ''lua require("harpoon.mark").add_file()''; options.desc = "Harpoon: Mark File"; } { mode = "n"; key = "hh"; action = ''lua require("harpoon.ui").toggle_quick_menu()''; options.desc = "Harpoon: Show Menu"; } { mode = "n"; key = "xx"; action = "Trouble diagnostics toggle"; options.desc = "Toggle Trouble (Diagnostics)"; } ]; plugins = { lualine = { enable = true; settings.options.theme = "gruvbox-material"; }; multicursors.enable = true; treesitter-context = { enable = true; settings = { max_lines = 2; trim_scope = "outer"; }; }; oil.enable = true; persistence.enable = true; nvim-autopairs.enable = true; neoscroll.enable = true; bufferline.enable = true; web-devicons.enable = true; blink-cmp.enable = true; gitsigns.enable = true; which-key.enable = true; harpoon = { enable = true; enableTelescope = true; }; toggleterm.enable = true; treesitter = { enable = true; }; telescope = { enable = true; extensions = { fzf-native = { enable = true; }; }; }; noice.enable = true; dressing.enable = true; trouble.enable = true; conform-nvim = { enable = true; settings.format_on_save = { lsp_fallback = true; timeout_ms = 500; }; }; # notify = { # enable = true; # settings = { # backgroundColour = "#1e1e2e"; # fps = 60; # render = "default"; # timeout = 500; # topDown = true; # }; # }; nix.enable = true; lsp = { enable = true; servers = { nil_ls.enable = true; clangd.enable = true; }; }; }; opts = { number = true; relativenumber = true; termguicolors = true; # mouse = "a"; ignorecase = true; smartcase = true; expandtab = true; shiftwidth = 2; encoding = "utf-8"; fileencoding = "utf-8"; undofile = true; swapfile = true; backup = false; autoread = true; cursorline = true; ruler = true; gdefault = true; scrolloff = 5; clipboard = { providers.wl-copy.enable = true; register = "unnamedplus"; }; }; }; }; }