{ lib, pkgs, inputs, ... }: { home-manager.users.moritz.programs.nixvim = { extraPlugins = [ (pkgs.vimUtils.buildVimPlugin { pname = "blink-compat"; src = inputs.blink-compat; version = lib.my.mkVersionInput inputs.blink-compat; }) ]; extraConfigLuaPre = '' require("blink.compat").setup({ impersonate_nvim_cmp = true }) ''; plugins.blink-cmp = { enable = true; package = inputs.blink-cmp.packages.${pkgs.system}.blink-cmp; settings = { keymap = { "" = [ "hide" ]; "" = [ "show" "show_documentation" "hide_documentation" ]; "" = [ "select_next" "fallback" ]; "" = [ "select_prev" "fallback" ]; "" = [ "snippet_forward" "fallback" ]; "" = [ "snippet_backward" "fallback" ]; "" = [ "accept" "fallback" ]; cmdline.preset = "super-tab"; }; appearance.nerd_font_variant = "mono"; sources = { default = [ "lsp" "path" "luasnip" "buffer" "vimtex" ]; providers.vimtex = { name = "vimtex"; module = "blink.compat.source"; }; }; signature.enabled = true; completion.documentation.auto_show = true; completion.accept.auto_brackets.enabled = true; snippets = { expand.__raw = ''require("luasnip").lsp_expand''; active.__raw = '' function(filter) if filter and filter.direction then return require('luasnip').jumpable(filter.direction) end return require('luasnip').in_snippet() end ''; jump.__raw = ''require("luasnip").jump''; }; }; }; }; }