{ lib, pkgs, ... }: { programs.nvf.settings.vim = { undoFile.enable = true; # theme = lib.mkForce { # enable = true; # name = "catppuccin"; # style = "latte"; # transparent = false; # }; navigation = { harpoon.enable = true; }; utility = { motion.flash-nvim.enable = true; outline.aerial-nvim.enable = true; diffview-nvim.enable = true; surround.enable = true; smart-splits.enable = true; yanky-nvim.enable = true; }; tabline.nvimBufferline.enable = true; notes.todo-comments.enable = true; # assistant.copilot = { # enable = true; # cmp.enable = true; # }; statusline.lualine.enable = true; autocomplete = { nvim-cmp = { enable = true; sources = { buffer = "[Buffer]"; nvim-cmp = null; path = "[Path]"; }; sourcePlugins = [ pkgs.vimPlugins.cmp-cmdline ]; }; }; snippets.luasnip.enable = true; snippets.luasnip.customSnippets.snipmate = { all = [ { trigger = "if"; body = "if $1 else $2"; } ]; nix = [ { trigger = "mkOption"; body = '' mkOption { type = $1; default = $2; description = $3; example = $4; } ''; } ]; haskell = [ { trigger = "zzis"; body = '' insert :: (Ord a) => a -> [a] -> [a] insert x [] = [x] insert x (y:ys) | x <= y = x : y : ys | otherwise = y : insert x ys insertionSort :: (Ord a) => [a] -> [a] insertionSort [] = [] insertionSort (x:xs) = insert x (insertionSort xs) ''; } { trigger = "zzso"; body = '' sortOn :: Ord b => (a -> b) -> [a] -> [a] sortOn f = foldr insert [] where insert x [] = [x] insert x (y:ys) | f x <= f y = x : y : ys | otherwise = y : insert x ys ''; } ]; }; ui = { noice.enable = true; colorizer.enable = true; }; visuals = { rainbow-delimiters.enable = true; nvim-scrollbar = { enable = false; }; }; git = { enable = true; gitsigns.enable = true; }; terminal.toggleterm = { enable = true; lazygit = { enable = true; mappings.open = "gl"; }; }; formatter.conform-nvim.enable = true; binds.hardtime-nvim.enable = true; utility.motion.precognition.enable = true; binds.hardtime-nvim.setupOpts = { max_count = 3; # Optional: limit of consecutive presses disabled_keys = { "" = false; "" = false; "" = false; "" = false; }; restricted_keys = { "" = [ "n" "x" ]; "" = [ "n" "x" ]; "" = [ "n" "x" ]; "" = [ "n" "x" ]; }; }; }; }