nix-config/modules/nixos-modules/ai.nix

44 lines
1.3 KiB
Nix

{lib, ...}: {
options.host = {
ai = {
enable = lib.mkEnableOption "should we use AI on this machine";
models = lib.mkOption {
type = lib.types.attrsOf (lib.types.submodule ({name, ...}: {
option = {
name = lib.mkOption {
type = lib.types.str;
default = name;
};
model = {
type = lib.types.str;
};
provider = {
type = lib.types.str;
default = "ollama";
};
apiBase = {
type = lib.types.str;
default = null;
};
roles = {
type = lib.types.listOf lib.types.enumOf [
"chat"
"autocomplete"
"embed"
"rerank"
"edit"
"apply"
"summarize"
];
};
};
}));
};
};
};
config = {
# TODO: configure ollama to download any modules listed in options.host.ai.models.{name}.model if options.host.ai.models.{name}.apiBase is null
# TODO: if we have any models that have a non null options.host.ai.models.{name}.apiBase then set services.ollama.enable to a lib.mkAfter true
};
}