{ config, pkgs, lib, ... }: let
  api_key_file = "${config.home.homeDirectory}/Gist/Vault/siliconflow_api_key_chatbox.txt";
in { config = lib.mkIf (builtins.pathExists api_key_file) {
  # mkAfter makes sure statusline setting is after nvim-nav.nix
  programs.neovim.plugins = lib.mkAfter [pkgs.vimPlugins.plenary-nvim {
    plugin = pkgs.vimPlugins.minuet-ai-nvim;
    type = "lua";
    config = /*lua*/ ''
      require('minuet').setup {
        provider = 'openai_fim_compatible',
        provider_options = {
          openai_fim_compatible = {
            name = 'Qwen',
            end_point = 'https://api.siliconflow.cn/v1/completions',
            api_key = function() return '${lib.fileContents api_key_file}' end,
            model = "Qwen/Qwen3-Coder-30B-A3B-Instruct",
            optional = {
              max_tokens = 256,
              top_p = 0.9,
            },
          },
        },
      }

      function update_minuet_statusline()
        local minuet = require("minuet")
        vim.o.statusline = string.gsub(vim.o.statusline, "[ᯤ]*$",
          minuet.config.blink.enable_auto_complete and "ᯤ" or "")
      end
      vim.keymap.set({'n','i'}, '<A-a>', function() 
        local minuet = require("minuet")
        minuet.config.blink.enable_auto_complete = not minuet.config.blink.enable_auto_complete
        update_minuet_statusline()
      end)
      update_minuet_statusline()
    '';
  }];
};}