{ pkgs, lib, ... }: let
catwalk-providers = import ./catwalk-providers pkgs;
in {
imports = [
./mcp.nix
];
# TODO: Precisely define the type
options.ai = lib.mkOption { type = lib.types.attrs; };
config.ai = {
deepseek = catwalk-providers.deepseek // {
api_key = lib.trim (builtins.readFile ~/Gist/Vault/deepseek_api_key_nvim.txt);
};
kimi = catwalk-providers.kimi // {
api_key = lib.trim (builtins.readFile ~/Gist/Vault/AI/kimi.txt);
};
tavily.api_key = lib.trim (builtins.readFile ~/Gist/Vault/AI/tavily.txt);
jw2-kimi = catwalk-providers.kimi // {
id = "jw2-kimi";
name = "JW2 Kimi";
api_endpoint = lib.trim (builtins.readFile ~/Gist/Vault/AI/jw2-url.txt);
api_key = lib.trim (builtins.readFile ~/Gist/Vault/AI/jw2-kimi.txt);
};
jw2-openai = catwalk-providers.openai // {
id = "jw2-openai";
name = "JW2 OpenAI";
api_endpoint = lib.trim (builtins.readFile ~/Gist/Vault/AI/jw2-url.txt);
api_key = lib.trim (builtins.readFile ~/Gist/Vault/AI/jw2-openai.txt);
models = builtins.mapAttrs (
_: model: model // {
context_window = 353 * 1000;
}
) catwalk-providers.openai.models;
};
jw2-deepseek = catwalk-providers.deepseek // {
id = "jw2-deepseek";
name = "JW2 DeepSeek";
api_endpoint = lib.trim (builtins.readFile ~/Gist/Vault/AI/jw2-url.txt) + "/v1";
api_key = lib.trim (builtins.readFile ~/Gist/Vault/AI/jw2-deepseek.txt);
};
};
}