From 33a35705c794e6ea4f1b9ccdcc0ad6b419d3727c Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Tue, 9 Dec 2025 17:18:28 +0100 Subject: [PATCH] Add opencode module --- hosts/nixos-desktop/default.nix | 1 + hosts/stellaris/default.nix | 1 + modules/ai/opencode.nix | 74 +++++++++++++++++++++++++++++++++ modules/editor/vim/vim.nix | 3 +- 4 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 modules/ai/opencode.nix diff --git a/hosts/nixos-desktop/default.nix b/hosts/nixos-desktop/default.nix index 5f8b4aa..c662096 100644 --- a/hosts/nixos-desktop/default.nix +++ b/hosts/nixos-desktop/default.nix @@ -23,6 +23,7 @@ steam.enable = true; lutris.enable = true; }; + ai.opencode.enable = true; }; user.name = "froidmpa"; diff --git a/hosts/stellaris/default.nix b/hosts/stellaris/default.nix index 7fa8375..ffc52ee 100644 --- a/hosts/stellaris/default.nix +++ b/hosts/stellaris/default.nix @@ -27,6 +27,7 @@ steam.enable = true; lutris.enable = true; }; + ai.opencode.enable = true; }; # Monitor backlight control diff --git a/modules/ai/opencode.nix b/modules/ai/opencode.nix new file mode 100644 index 0000000..cd6dcfb --- /dev/null +++ b/modules/ai/opencode.nix @@ -0,0 +1,74 @@ +{ + inputs, + config, + lib, + pkgs, + ... +}: + +let + cfg = config.modules.ai.opencode; +in +{ + options.modules.ai.opencode = { + enable = lib.my.mkBoolOpt false; + }; + config = lib.mkIf cfg.enable { + home-manager.users.${config.user.name} = + { ... }: + { + programs.opencode = { + enable = true; + package = inputs.llm-agents.packages.${pkgs.system}.opencode; + settings = { + model = "glm_4_5_air"; + permission = { + bash = "ask"; + edit = "ask"; + }; + provider = { + vllm = { + npm = "@ai-sdk/openai-compatible"; + name = "vLLM"; + options = { + baseURL = "http://model1.lefoyer.lu:8030/v1"; + apiKey = "dummy"; + }; + models = { + glm_4_5_air = { + name = "GLM 4.5 Air (local)"; + temperature = true; + default = true; + }; + }; + }; + }; + agent = { + build = { + mode = "primary"; + temperature = 0.4; + }; + plan = { + mode = "primary"; + temperature = 0.4; + }; + }; + lsp = { + metals = { + command = [ "${pkgs.metals}/bin/metals" ]; + extensions = [ + ".scala" + ".sbt" + ".sc" + ]; + initialization = { + statusBarProvider = "log-message"; + doctorProvider = "json"; + }; + }; + }; + }; + }; + }; + }; +} diff --git a/modules/editor/vim/vim.nix b/modules/editor/vim/vim.nix index 3896622..8a70a60 100644 --- a/modules/editor/vim/vim.nix +++ b/modules/editor/vim/vim.nix @@ -311,8 +311,7 @@ in angular-language-server vtsls zk - - inputs.llm-agents.packages.${pkgs.system}.opencode + metals ]; }; };