AI Providers¶
Source directory: modules/ai/
antigravity-cli.nix¶
modules/ai/antigravity-cli.nix
- Enable option: Google Antigravity CLI (agy)
Options: enable, package, environmentVariables, enableShellIntegration
Options declaration (Nix)
options.modules.ai.antigravity-cli = {
enable = mkEnableOption "Google Antigravity CLI (agy)";
package = mkOption {
type = types.package;
default = pkgs.customPkgs.antigravity-cli;
description = "The antigravity-cli package to use";
};
environmentVariables = mkOption {
type = types.attrsOf types.str;
default = { };
description = "Environment variables to set for agy (still GEMINI_* per upstream migration docs)";
example = {
GEMINI_API_KEY = "your-api-key";
GEMINI_MODEL = "gemini-2.5-pro";
};
};
enableShellIntegration = mkOption {
type = types.bool;
default = true;
description = "Enable shell integration (aliases + desktop entry)";
};
}
default.nix¶
No option declarations; see source for implementation.
mcp-servers.nix¶
MCP (Model Context Protocol) Servers Module Provides AI agents with standardized tool access Compliant with NIXOS-ANTI-PATTERNS.md
- Enable option: MCP (Model Context Protocol) servers
Options declaration (Nix)
options.features.ai.mcp = {
enable = lib.mkEnableOption "MCP (Model Context Protocol) servers";
servers = lib.mkOption {
type = lib.types.attrsOf lib.types.bool;
default = { };
description = "Individual MCP servers to enable";
};
enableAll = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable all MCP servers (useful for development hosts)";
};
obsidian = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable Obsidian MCP server for vault access";
};
implementation = lib.mkOption {
type = lib.types.enum [ "rest-api" "zero-dependency" ];
default = "zero-dependency";
description = ''
MCP implementation type:
- rest-api: Uses Obsidian Local REST API plugin (requires plugin installation, provides full CRUD)
- zero-dependency: Uses @mauricio.wolff/mcp-obsidian (no plugin needed, read-only)
'';
};
vaultPath = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
example = "/home/user/Documents/ObsidianVault";
description = "Path to Obsidian vault (zero-dependency mode only)";
};
restApi = {
apiKeyFile = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
example = lib.literalExpression "config.age.secrets.\"obsidian-api-key\".path";
description = "Path to API key file (runtime loading, REST API mode only)";
};
host = lib.mkOption {
type = lib.types.str;
default = "localhost";
description = "Obsidian REST API host";
};
port = lib.mkOption {
type = lib.types.port;
default = 27123;
description = "Obsidian REST API port";
};
verifySsl = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Verify SSL certificates for HTTPS connections";
};
};
};
linkedin = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable LinkedIn MCP server for professional networking and job search";
};
cookieFile = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
example = lib.literalExpression "config.age.secrets.\"api-linkedin-cookie\".path";
description = ''
Path to LinkedIn li_at cookie file (runtime loading only).
Cookie expires approximately every 30 days and requires refresh.
NEVER set cookie value directly - use file path for runtime loading.
'';
};
};
atlassian = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
# … truncated — see source link above
anthropic.nix¶
modules/ai/providers/anthropic.nix
Options: enabled
Options declaration (Nix)
default.nix¶
modules/ai/providers/default.nix
- Enable option: Enhanced AI provider support with unified interface
- Enable option: OpenAI provider support
- Enable option: Anthropic/Claude provider support
- Enable option: Google Gemini provider support
Options: enable, defaultProvider, enableFallback, costOptimization, timeout, maxRetries, priority, models, defaultModel
Options declaration (Nix)
options.ai.providers = {
enable = mkEnableOption "Enhanced AI provider support with unified interface";
defaultProvider = mkOption {
type = types.enum [ "openai" "anthropic" "gemini" ];
default = "anthropic";
description = "Default AI provider to use";
example = "openai";
};
enableFallback = mkOption {
type = types.bool;
default = true;
description = "Enable automatic fallback between providers";
};
costOptimization = mkOption {
type = types.bool;
default = false;
description = "Enable cost-based provider selection";
};
timeout = mkOption {
type = types.int;
default = 30;
description = "Request timeout in seconds";
};
maxRetries = mkOption {
type = types.int;
default = 3;
description = "Maximum number of retries per provider";
};
openai = {
enable = mkEnableOption "OpenAI provider support";
priority = mkOption {
type = types.int;
default = 1;
description = "Provider priority (1 = highest)";
};
models = mkOption {
type = types.listOf types.str;
default = [ "gpt-4o" "gpt-4o-mini" "gpt-3.5-turbo" ];
description = "Available OpenAI models";
};
defaultModel = mkOption {
type = types.str;
default = "gpt-4o-mini";
description = "Default OpenAI model";
};
};
anthropic = {
enable = mkEnableOption "Anthropic/Claude provider support";
priority = mkOption {
type = types.int;
default = 2;
description = "Provider priority (1 = highest)";
};
models = mkOption {
type = types.listOf types.str;
default = [ "claude-sonnet-4-6" "claude-haiku-4-5-20251001" "claude-opus-4-6" ];
description = "Available Anthropic models";
};
defaultModel = mkOption {
type = types.str;
default = "claude-sonnet-4-6";
description = "Default Anthropic model";
};
};
gemini = {
enable = mkEnableOption "Google Gemini provider support";
priority = mkOption {
type = types.int;
default = 3;
description = "Provider priority (1 = highest)";
};
models = mkOption {
type = types.listOf types.str;
default = [ "gemini-2.5-pro" "gemini-2.5-flash" "gemini-2.0-flash" ];
description = "Available Gemini models";
};
defaultModel = mkOption {
type = types.str;
default = "gemini-2.5-flash";
description = "Default Gemini model";
};
# … truncated — see source link above
gemini.nix¶
modules/ai/providers/gemini.nix
Options: enabled
Options declaration (Nix)
openai.nix¶
modules/ai/providers/openai.nix
Options: enabled
Options declaration (Nix)
unified-client.nix¶
modules/ai/providers/unified-client.nix
Options: enable