From 77ab4781ac005f89a76eef72113f766ed2b6828b Mon Sep 17 00:00:00 2001 From: Leyla Becker Date: Sat, 24 May 2025 23:03:20 -0500 Subject: [PATCH] started to draft out configuration of continue models --- .../home-manager/leyla/vscode/default.nix | 102 +++++++++--------- .../nixos/twilight/configuration.nix | 59 +++++++++- modules/nixos-modules/continue.nix | 44 ++++++++ modules/nixos-modules/default.nix | 1 + 4 files changed, 154 insertions(+), 52 deletions(-) create mode 100644 modules/nixos-modules/continue.nix diff --git a/configurations/home-manager/leyla/vscode/default.nix b/configurations/home-manager/leyla/vscode/default.nix index e123149..1108f2f 100644 --- a/configurations/home-manager/leyla/vscode/default.nix +++ b/configurations/home-manager/leyla/vscode/default.nix @@ -65,58 +65,58 @@ in { # builtins.elemAt osConfig.services.ollama.loadModels 0; }) ]; + + extensions = ( + with open-vsx; + [ + # vs code feel extensions + ms-vscode.atom-keybindings + akamud.vscode-theme-onedark + streetsidesoftware.code-spell-checker + streetsidesoftware.code-spell-checker-german + streetsidesoftware.code-spell-checker-italian + jeanp413.open-remote-ssh + + # html extensions + formulahendry.auto-rename-tag + ms-vscode.live-server + + # js extensions + dsznajder.es7-react-js-snippets + dbaeumer.vscode-eslint + standard.vscode-standard + firsttris.vscode-jest-runner + stylelint.vscode-stylelint + tauri-apps.tauri-vscode + + # go extensions + golang.go + + # astro blog extensions + astro-build.astro-vscode + unifiedjs.vscode-mdx + + # misc extensions + tamasfe.even-better-toml + ] + ++ (lib.lists.optionals nix-development-enabled [ + # nix extensions + pinage404.nix-extension-pack + jnoortheen.nix-ide + kamadorueda.alejandra + ]) + ++ ( + with vscode-marketplace; + [ + # js extensions + karyfoundation.nearley + ] + ++ (lib.lists.optionals ai-tooling-enabled [ + continue.continue + ]) + ) + ); }; - - extensions = ( - with open-vsx; - [ - # vs code feel extensions - ms-vscode.atom-keybindings - akamud.vscode-theme-onedark - streetsidesoftware.code-spell-checker - streetsidesoftware.code-spell-checker-german - streetsidesoftware.code-spell-checker-italian - jeanp413.open-remote-ssh - - # html extensions - formulahendry.auto-rename-tag - ms-vscode.live-server - - # js extensions - dsznajder.es7-react-js-snippets - dbaeumer.vscode-eslint - standard.vscode-standard - firsttris.vscode-jest-runner - stylelint.vscode-stylelint - tauri-apps.tauri-vscode - - # go extensions - golang.go - - # astro blog extensions - astro-build.astro-vscode - unifiedjs.vscode-mdx - - # misc extensions - tamasfe.even-better-toml - ] - ++ (lib.lists.optionals nix-development-enabled [ - # nix extensions - pinage404.nix-extension-pack - jnoortheen.nix-ide - kamadorueda.alejandra - ]) - ++ ( - with vscode-marketplace; - [ - # js extensions - karyfoundation.nearley - ] - ++ (lib.lists.optionals ai-tooling-enabled [ - continue.continue - ]) - ) - ); }; }; } diff --git a/configurations/nixos/twilight/configuration.nix b/configurations/nixos/twilight/configuration.nix index f851b08..12d9151 100644 --- a/configurations/nixos/twilight/configuration.nix +++ b/configurations/nixos/twilight/configuration.nix @@ -30,8 +30,65 @@ graphicsAcceleration.enable = true; directAccess.enable = true; }; - }; + ai = { + enable = true; + # TODO: benchmark twilight against defiant and prune this list of models that are faster on defiant + models = { + # conversation models + "lamma3.1:8b" = { + model = "lamma3.1:8b"; + # TODO: figure out what should be in this array + # roles = [""]; + }; + "deepseek-r1:8b" = { + model = "deepseek-r1:8b"; + # TODO: figure out what should be in this array + # roles = [""]; + }; + "deepseek-r1:32b" = { + model = "deepseek-r1:32b"; + # TODO: figure out what should be in this array + # roles = [""]; + }; + # auto complete models + "qwen2.5-coder:1.5b-base" = { + model = "qwen2.5-coder:1.5b-base"; + # TODO: figure out what should be in this array + # roles = [""]; + }; + "qwen2.5-coder:7b" = { + model = "qwen2.5-coder:7b"; + # TODO: figure out what should be in this array + # roles = [""]; + }; + "deepseek-coder:6.7b" = { + model = "deepseek-coder:6.7b"; + # TODO: figure out what should be in this array + # roles = [""]; + }; + "deepseek-coder:33b" = { + model = "deepseek-coder:33b"; + # TODO: figure out what should be in this array + # roles = [""]; + }; + + # agent models + "qwen3:32b" = { + model = "qwen3:32b"; + # TODO: figure out what should be in this array + # roles = [""]; + }; + + # embedding models + "nomic-embed-text:latest" = { + model = "nomic-embed-text:latest"; + # TODO: figure out what should be in this array + # roles = [""]; + }; + }; + }; + }; services = { ollama = { enable = true; diff --git a/modules/nixos-modules/continue.nix b/modules/nixos-modules/continue.nix new file mode 100644 index 0000000..73ff4db --- /dev/null +++ b/modules/nixos-modules/continue.nix @@ -0,0 +1,44 @@ +{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 + }; +} diff --git a/modules/nixos-modules/default.nix b/modules/nixos-modules/default.nix index fdbdc7e..67c75ce 100644 --- a/modules/nixos-modules/default.nix +++ b/modules/nixos-modules/default.nix @@ -12,6 +12,7 @@ ./impermanence.nix ./disko.nix ./ollama.nix + ./continue.nix ./tailscale.nix ./server ];