generate .continue/config.yaml via configuration
This commit is contained in:
parent
2c77cf2ed4
commit
393f468be2
6 changed files with 117 additions and 20 deletions
|
@ -83,6 +83,32 @@
|
|||
};
|
||||
};
|
||||
|
||||
user = {
|
||||
continue = {
|
||||
enable = true;
|
||||
docs = {
|
||||
"Continue Docs" = {
|
||||
startUrl = "https://docs.continue.dev";
|
||||
};
|
||||
"Nixpkgs" = {
|
||||
startUrl = "https://ryantm.github.io/nixpkgs/#preface";
|
||||
};
|
||||
"Nix Manual" = {
|
||||
startUrl = "https://nixos.org/manual/nixos/stable/";
|
||||
};
|
||||
"Home manager Manual" = {
|
||||
startUrl = "https://nix-community.github.io/home-manager/";
|
||||
};
|
||||
"Nix Docs" = {
|
||||
startUrl = "https://nix.dev/index.html";
|
||||
};
|
||||
"Linux Man Page" = {
|
||||
startUrl = "https://linux.die.net/man/";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs = {
|
||||
# Let Home Manager install and manage itself.
|
||||
home-manager.enable = true;
|
||||
|
|
|
@ -2,11 +2,12 @@
|
|||
lib,
|
||||
pkgs,
|
||||
inputs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: let
|
||||
nix-development-enabled = osConfig.host.nix-development.enable;
|
||||
ai-tooling-enabled = osConfig.services.ollama.enable;
|
||||
ai-tooling-enabled = config.user.continue.enable && osConfig.host.ai.enable;
|
||||
in {
|
||||
nixpkgs = {
|
||||
overlays = [
|
||||
|
@ -14,9 +15,6 @@ in {
|
|||
];
|
||||
};
|
||||
|
||||
# TODO: when ai-tooling is enabled configure ~/.continue/config.yaml to use remote hosted on defiant
|
||||
# TODO: when ai-tooling is enabled configure ~/.continue/config.yaml to use use better models hosted on defiant
|
||||
|
||||
programs = {
|
||||
bash.shellAliases = {
|
||||
code = "codium";
|
||||
|
@ -59,10 +57,8 @@ in {
|
|||
"expr" = "import <nixpkgs> {}";
|
||||
};
|
||||
})
|
||||
(lib.mkIf osConfig.services.ollama.enable {
|
||||
(lib.mkIf ai-tooling-enabled {
|
||||
"continue.telemetryEnabled" = false;
|
||||
|
||||
# builtins.elemAt osConfig.services.ollama.loadModels 0;
|
||||
})
|
||||
];
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
# TODO: benchmark twilight against defiant and prune this list of models that are faster on defiant
|
||||
models = {
|
||||
# conversation models
|
||||
"lamma3.1:8b" = {
|
||||
"Llama 3.1 8B" = {
|
||||
model = "lamma3.1:8b";
|
||||
roles = ["chat" "edit" "apply"];
|
||||
};
|
||||
|
|
|
@ -1,3 +1,75 @@
|
|||
{...}: {
|
||||
# TODO: enable option for continue.yaml for home based on options defined in osConfig.ai.models
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
config,
|
||||
osConfig,
|
||||
...
|
||||
}: let
|
||||
ai-tooling-enabled = config.user.continue.enable && osConfig.host.ai.enable;
|
||||
in {
|
||||
options = {
|
||||
user.continue = {
|
||||
enable = lib.mkEnableOption "should continue be enabled on this machine";
|
||||
docs = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.submodule ({name, ...}: {
|
||||
options = {
|
||||
name = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = name;
|
||||
};
|
||||
startUrl = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
};
|
||||
};
|
||||
}));
|
||||
};
|
||||
context = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.submodule ({name, ...}: {
|
||||
options = {
|
||||
provider = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = name;
|
||||
};
|
||||
};
|
||||
}));
|
||||
default = {
|
||||
"code" = {};
|
||||
"docs" = {};
|
||||
"diff" = {};
|
||||
"terminal" = {};
|
||||
"problems" = {};
|
||||
"folder" = {};
|
||||
"codebase" = {};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config =
|
||||
lib.mkIf ai-tooling-enabled
|
||||
(lib.mkMerge [
|
||||
{
|
||||
home = {
|
||||
file = {
|
||||
".continue/config.yaml".source = (pkgs.formats.yaml {}).generate "continue-config" {
|
||||
name = "Assistant";
|
||||
version = "1.0.0";
|
||||
schema = "v1";
|
||||
models = lib.attrsets.attrValues osConfig.host.ai.models;
|
||||
context = lib.attrsets.attrValues config.user.continue.context;
|
||||
docs = lib.attrsets.attrValues config.user.continue.docs;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
(lib.mkIf osConfig.host.impermanence.enable {
|
||||
home.persistence."/persist${config.home.homeDirectory}" = {
|
||||
directories = [
|
||||
".continue/index"
|
||||
".continue/sessions"
|
||||
];
|
||||
allowOther = true;
|
||||
};
|
||||
})
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -4,5 +4,6 @@
|
|||
./flipperzero.nix
|
||||
./i18n.nix
|
||||
./openssh.nix
|
||||
./continue.nix
|
||||
];
|
||||
}
|
||||
|
|
|
@ -4,24 +4,24 @@
|
|||
enable = lib.mkEnableOption "should we use AI on this machine";
|
||||
models = lib.mkOption {
|
||||
type = lib.types.attrsOf (lib.types.submodule ({name, ...}: {
|
||||
option = {
|
||||
options = {
|
||||
name = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = name;
|
||||
};
|
||||
model = {
|
||||
model = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
};
|
||||
provider = {
|
||||
provider = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "ollama";
|
||||
};
|
||||
apiBase = {
|
||||
type = lib.types.str;
|
||||
default = null;
|
||||
};
|
||||
roles = {
|
||||
type = lib.types.listOf lib.types.enumOf [
|
||||
# apiBase = lib.mkOption {
|
||||
# type = lib.types.nullOr lib.types.str;
|
||||
# default = null;
|
||||
# };
|
||||
roles = lib.mkOption {
|
||||
type = lib.types.listOf (lib.types.enum [
|
||||
"chat"
|
||||
"autocomplete"
|
||||
"embed"
|
||||
|
@ -29,11 +29,13 @@
|
|||
"edit"
|
||||
"apply"
|
||||
"summarize"
|
||||
];
|
||||
]);
|
||||
default = [];
|
||||
};
|
||||
};
|
||||
}));
|
||||
};
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue