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 ]; }; };