47 lines
992 B
Nix
47 lines
992 B
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
with lib; let
|
|
cfg = config.home.dev.ai;
|
|
jsonFormat = pkgs.formats.json {};
|
|
in {
|
|
imports = [
|
|
./claude.nix
|
|
./ollama.nix
|
|
./opencode.nix
|
|
];
|
|
|
|
options.home.dev.ai = {
|
|
enable = mkEnableOption "Enables AI features";
|
|
lmStudio = mkOption {
|
|
default = cfg.enable;
|
|
example = true;
|
|
description = "Enables LM Studio. Enabled by default when AI is enabled.";
|
|
};
|
|
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;
|
|
opencode.enable = mkDefault cfg.enable;
|
|
};
|
|
packages = lists.optional cfg.lmStudio pkgs.lmstudio;
|
|
};
|
|
programs.mcp = mkIf (cfg.mcpServers != {}) {
|
|
enable = true;
|
|
servers = cfg.mcpServers;
|
|
};
|
|
};
|
|
}
|