{ config, lib, ... }: lib.mkIf (lib.elem "nvim::blink" config.machine.pkgs) { programs.nvim-lazy.lazyPlugins = [ { dir = vPlug: vPlug.friendly-snippets; } { dir = vPlug: vPlug.blink-cmp; dependencies = vPlug: with vPlug; [ friendly-snippets ]; opts = { # 'default' for mappings similar to built-in completion # 'super-tab' for mappings similar to vscode (tab to accept, arrow keys to navigate) # 'enter' for mappings similar to 'super-tab' but with 'enter' to accept # See the full "keymap" documentation for information on defining your own keymap. keymap = { preset = "default"; # "[\"\"]" = [ "select_prev" "fallback" ]; # "[\"\"]" = [ "select_next" "fallback" ]; }; appearance = { # Sets the fallback highlight groups to nvim-cmp's highlight groups # Useful for when your theme doesn't support blink.cmp # Will be removed in a future release use_nvim_cmp_as_default = true; # Set to 'mono' for 'Nerd Font Mono' or 'normal' for 'Nerd Font' # Adjusts spacing to ensure icons are aligned nerd_font_variant = "mono"; }; fuzzy = { implementation = "prefer_rust"; }; # Default list of enabled providers defined so that you can extend it # elsewhere in your config, without redefining it, due to `opts_extend` sources = { default = [ "lsp" "path" "snippets" "buffer" ]; }; }; # opts_extend = [ "sources.default" ]; } ]; }