137 lines
3.9 KiB
Nix
137 lines
3.9 KiB
Nix
{
|
|
inputs,
|
|
...
|
|
}:
|
|
let
|
|
declaration = "services/misc/litellm.nix";
|
|
nixpkgs = inputs.litellm-nixpkgs;
|
|
pkgs = import nixpkgs {
|
|
system = "x86_64-linux";
|
|
config.allowUnfree = true;
|
|
};
|
|
port = 8094;
|
|
in
|
|
{
|
|
disabledModules = [ declaration ];
|
|
imports = [ "${nixpkgs}/nixos/modules/${declaration}" ];
|
|
options = { };
|
|
config = {
|
|
networking.firewall.enable = true;
|
|
# Expose litellm to my overlay network as well
|
|
networking.firewall.interfaces."tailscale0".allowedTCPPorts = [ port ];
|
|
|
|
services.litellm = {
|
|
enable = true;
|
|
inherit port;
|
|
host = "0.0.0.0";
|
|
openFirewall = false;
|
|
package = pkgs.litellm;
|
|
environment = {
|
|
SCARF_NO_ANALYTICS = "True";
|
|
DO_NOT_TRACK = "True";
|
|
ANONYMIZED_TELEMETRY = "False";
|
|
GITHUB_COPILOT_TOKEN_DIR = "/var/lib/litellm/github_copilot";
|
|
XDG_CONFIG_HOME = "/var/lib/litellm/.config";
|
|
};
|
|
settings = {
|
|
environment_variables = {
|
|
LITELLM_PROXY_API_KEY = "na";
|
|
LITELLM_PROXY_API_BASE = "http://100.64.0.8:9010/air_key";
|
|
};
|
|
litellm_settings = {
|
|
check_provider_endpoints = true;
|
|
drop_params = true;
|
|
};
|
|
model_list = [
|
|
]
|
|
# Copilot
|
|
++ (builtins.map
|
|
(m: {
|
|
model_name = "copilot-${m}";
|
|
litellm_params = {
|
|
model = "github_copilot/${m}";
|
|
extra_headers = {
|
|
editor-version = "vscode/${pkgs.vscode.version}";
|
|
editor-plugin-version = "copilot/${pkgs.vscode-extensions.github.copilot.version}";
|
|
Copilot-Integration-Id = "vscode-chat";
|
|
Copilot-Vision-Request = "true";
|
|
user-agent = "GithubCopilot/${pkgs.vscode-extensions.github.copilot.version}";
|
|
};
|
|
};
|
|
|
|
})
|
|
# List from https://github.com/settings/copilot/features enabled models
|
|
[
|
|
"claude-sonnet-3.5"
|
|
"claude-sonnet-4"
|
|
"claude-sonnet-4.5"
|
|
"gemini-2.5-pro"
|
|
"openai-gpt-5"
|
|
"openai-gpt-5-mini"
|
|
]
|
|
)
|
|
# Azure
|
|
++ (builtins.map
|
|
(m: {
|
|
model_name = "azure-${m}";
|
|
litellm_params = {
|
|
model = "azure/${m}";
|
|
api_base = "http://100.64.0.8:9010/azure";
|
|
api_version = "2025-04-01-preview";
|
|
api_key = "na";
|
|
};
|
|
})
|
|
[
|
|
"gpt-4o-2024-05-13"
|
|
"gpt-4.1-2025-04-14"
|
|
"gpt-4.1-mini-2025-04-14"
|
|
"gpt-5-nano-2025-08-07"
|
|
"gpt-5-mini-2025-08-07"
|
|
"gpt-5-2025-08-07"
|
|
# "gpt-5-codex-2025-09-15"
|
|
]
|
|
)
|
|
# 宙 Proxy
|
|
++ (builtins.map
|
|
(m: {
|
|
model_name = "air-${m}";
|
|
litellm_params = {
|
|
model = "litellm_proxy/${m}";
|
|
api_base = "http://100.64.0.8:9010/air_prd";
|
|
api_key = "os.environ/LITELLM_PROXY_API_KEY";
|
|
};
|
|
})
|
|
# curl -L t.net.joshuabell.xyz:9010/air_key/models | jq '.data.[].id'
|
|
[
|
|
"gpt-5-mini"
|
|
"gpt-5"
|
|
"gpt-4.1"
|
|
"gpt-4.1-mini"
|
|
"gpt-4o"
|
|
"gpt-4o-mini"
|
|
"o3-mini"
|
|
"o4-mini"
|
|
"gemini-2.5-pro"
|
|
"gemini-2.0-flash"
|
|
"gemini-2.5-flash"
|
|
"gemini-2.0-flash-lite"
|
|
"gemini-2.5-flash-lite"
|
|
"claude-opus-4.1"
|
|
"claude-opus-4"
|
|
"claude-sonnet-4"
|
|
"claude-3.7-sonnet"
|
|
"text-embedding-3-small"
|
|
"text-embedding-3-large"
|
|
"text-embedding-ada-002"
|
|
"text-embedding-large-exp-03-07"
|
|
"text-embedding-005"
|
|
"llama7b"
|
|
"medgemma-4b"
|
|
"qwen3-instruct"
|
|
"bge-small-en-v1.5"
|
|
]
|
|
);
|
|
};
|
|
};
|
|
};
|
|
}
|