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 = {
|
programs = {
|
||||||
# Let Home Manager install and manage itself.
|
# Let Home Manager install and manage itself.
|
||||||
home-manager.enable = true;
|
home-manager.enable = true;
|
||||||
|
|
|
@ -2,11 +2,12 @@
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
inputs,
|
||||||
|
config,
|
||||||
osConfig,
|
osConfig,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
nix-development-enabled = osConfig.host.nix-development.enable;
|
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 {
|
in {
|
||||||
nixpkgs = {
|
nixpkgs = {
|
||||||
overlays = [
|
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 = {
|
programs = {
|
||||||
bash.shellAliases = {
|
bash.shellAliases = {
|
||||||
code = "codium";
|
code = "codium";
|
||||||
|
@ -59,10 +57,8 @@ in {
|
||||||
"expr" = "import <nixpkgs> {}";
|
"expr" = "import <nixpkgs> {}";
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
(lib.mkIf osConfig.services.ollama.enable {
|
(lib.mkIf ai-tooling-enabled {
|
||||||
"continue.telemetryEnabled" = false;
|
"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
|
# TODO: benchmark twilight against defiant and prune this list of models that are faster on defiant
|
||||||
models = {
|
models = {
|
||||||
# conversation models
|
# conversation models
|
||||||
"lamma3.1:8b" = {
|
"Llama 3.1 8B" = {
|
||||||
model = "lamma3.1:8b";
|
model = "lamma3.1:8b";
|
||||||
roles = ["chat" "edit" "apply"];
|
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
|
./flipperzero.nix
|
||||||
./i18n.nix
|
./i18n.nix
|
||||||
./openssh.nix
|
./openssh.nix
|
||||||
|
./continue.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,24 +4,24 @@
|
||||||
enable = lib.mkEnableOption "should we use AI on this machine";
|
enable = lib.mkEnableOption "should we use AI on this machine";
|
||||||
models = lib.mkOption {
|
models = lib.mkOption {
|
||||||
type = lib.types.attrsOf (lib.types.submodule ({name, ...}: {
|
type = lib.types.attrsOf (lib.types.submodule ({name, ...}: {
|
||||||
option = {
|
options = {
|
||||||
name = lib.mkOption {
|
name = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
default = name;
|
default = name;
|
||||||
};
|
};
|
||||||
model = {
|
model = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
};
|
};
|
||||||
provider = {
|
provider = lib.mkOption {
|
||||||
type = lib.types.str;
|
type = lib.types.str;
|
||||||
default = "ollama";
|
default = "ollama";
|
||||||
};
|
};
|
||||||
apiBase = {
|
# apiBase = lib.mkOption {
|
||||||
type = lib.types.str;
|
# type = lib.types.nullOr lib.types.str;
|
||||||
default = null;
|
# default = null;
|
||||||
};
|
# };
|
||||||
roles = {
|
roles = lib.mkOption {
|
||||||
type = lib.types.listOf lib.types.enumOf [
|
type = lib.types.listOf (lib.types.enum [
|
||||||
"chat"
|
"chat"
|
||||||
"autocomplete"
|
"autocomplete"
|
||||||
"embed"
|
"embed"
|
||||||
|
@ -29,11 +29,13 @@
|
||||||
"edit"
|
"edit"
|
||||||
"apply"
|
"apply"
|
||||||
"summarize"
|
"summarize"
|
||||||
];
|
]);
|
||||||
|
default = [];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
default = {};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue