2025-09-03 11:45:12 +02:00
|
|
|
{
|
|
|
|
|
config,
|
|
|
|
|
lib,
|
2025-12-07 15:02:21 +01:00
|
|
|
pkgs,
|
2025-09-03 11:45:12 +02:00
|
|
|
...
|
|
|
|
|
}:
|
|
|
|
|
with lib; let
|
|
|
|
|
cfg = config.home.dev.ai;
|
2026-03-26 00:11:24 +01:00
|
|
|
jsonFormat = pkgs.formats.json {};
|
2025-09-03 11:45:12 +02:00
|
|
|
in {
|
|
|
|
|
imports = [
|
|
|
|
|
./claude.nix
|
2026-01-25 16:19:09 +01:00
|
|
|
./ollama.nix
|
2026-03-26 22:30:44 +01:00
|
|
|
./opencode.nix
|
2025-09-03 11:45:12 +02:00
|
|
|
];
|
|
|
|
|
|
2026-03-26 00:11:24 +01:00
|
|
|
options.home.dev.ai = {
|
|
|
|
|
enable = mkEnableOption "Enables AI features";
|
2026-06-21 15:29:43 +02:00
|
|
|
lmStudio = mkOption {
|
|
|
|
|
default = cfg.enable;
|
|
|
|
|
example = true;
|
|
|
|
|
description = "Enables LM Studio. Enabled by default when AI is enabled.";
|
|
|
|
|
};
|
2026-03-26 00:11:24 +01:00
|
|
|
mcpServers = mkOption {
|
|
|
|
|
inherit (jsonFormat) type;
|
|
|
|
|
default = {};
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
config = {
|
|
|
|
|
home = mkIf cfg.enable {
|
|
|
|
|
dev.ai = {
|
|
|
|
|
claude = {
|
|
|
|
|
enable = mkDefault cfg.enable;
|
|
|
|
|
mcpServers = mkDefault cfg.mcpServers;
|
|
|
|
|
};
|
|
|
|
|
ollama.enable = mkDefault cfg.enable;
|
2026-03-26 22:30:44 +01:00
|
|
|
opencode.enable = mkDefault cfg.enable;
|
2026-03-26 00:11:24 +01:00
|
|
|
};
|
2026-06-21 15:29:43 +02:00
|
|
|
packages = lists.optional cfg.lmStudio pkgs.lmstudio;
|
2026-03-26 00:11:24 +01:00
|
|
|
};
|
|
|
|
|
programs.mcp = mkIf (cfg.mcpServers != {}) {
|
|
|
|
|
enable = true;
|
|
|
|
|
servers = cfg.mcpServers;
|
2025-12-07 15:02:21 +01:00
|
|
|
};
|
2025-09-03 11:45:12 +02:00
|
|
|
};
|
|
|
|
|
}
|