diff --git a/flake.lock b/flake.lock index 4689c36..3c92414 100644 --- a/flake.lock +++ b/flake.lock @@ -143,16 +143,17 @@ ] }, "locked": { - "lastModified": 1770657009, - "narHash": "sha256-v/LA5ZSJ+JQYzMSKB4sySM0wKfsAqddNzzxLLnbsV/E=", + "lastModified": 1768814715, + "narHash": "sha256-uTvoxG2KuWQsIaVbvzkEQB276IxVZYrV+UeALXnIyp8=", "owner": "nix-community", - "repo": "NixOS-WSL", - "rev": "5b50ea1aaa14945d4794c80fcc99c4aa1db84d2d", + "repo": "nixos-wsl", + "rev": "a14126746cee49ba450b9c7e0dc024128e094009", "type": "github" }, "original": { "owner": "nix-community", - "repo": "NixOS-WSL", + "ref": "release-25.05", + "repo": "nixos-wsl", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 18e2ed2..8a774cb 100644 --- a/flake.nix +++ b/flake.nix @@ -10,7 +10,7 @@ nixpkgs-wsl-stable.url = "github:nixos/nixpkgs/nixos-25.05"; nixos-wsl = { - url = "github:nix-community/NixOS-WSL"; + url = "github:nix-community/nixos-wsl/release-25.05"; inputs.nixpkgs.follows = "nixpkgs-wsl-stable"; }; diff --git a/hosts/work/common.nix b/hosts/work/common.nix index d4655ed..88f003e 100644 --- a/hosts/work/common.nix +++ b/hosts/work/common.nix @@ -19,6 +19,7 @@ enable = true; claude-code.enable = true; opencode.enable = true; + opencode.enableConfig = true; }; dot.tmux.workMode = true; diff --git a/modules/home/common.nix b/modules/home/common.nix index ab5e7af..cb4ea4b 100644 --- a/modules/home/common.nix +++ b/modules/home/common.nix @@ -17,6 +17,7 @@ ./dev.nix ./nvim.nix ./task.nix + ./opencode.nix ]; config = { diff --git a/modules/home/opencode.nix b/modules/home/opencode.nix new file mode 100644 index 0000000..e40a769 --- /dev/null +++ b/modules/home/opencode.nix @@ -0,0 +1,68 @@ +{ config, lib, ... }: + +let + cfg = config.dot.llm.opencode; +in +{ + options.dot.llm.opencode = { + enableConfig = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable managed OpenCode configuration with sops-nix secrets"; + }; + }; + + config = lib.mkIf cfg.enableConfig { + # Declare the sops secret + sops.secrets.langdock-api-key = { + # Uses defaultSopsFile from secrets.nix + }; + + # Create the OpenCode config.json template with secret substitution + sops.templates."opencode/config.json" = { + content = builtins.toJSON { + "$schema" = "https://opencode.ai/config.json"; + model = "anthropic/claude-sonnet-4-5-20250929"; + small_model = "anthropic/claude-haiku-4-5-20251001"; + provider = { + langdock-openai = { + npm = "@ai-sdk/openai-compatible"; + name = "Langdock OpenAI"; + options = { + baseURL = "https://api.langdock.com/openai/eu/v1"; + apiKey = config.sops.placeholder.langdock-api-key; + }; + models = { + "gpt-5.2" = { name = "GPT-5.2"; }; + "gpt-4.1" = { name = "GPT-4.1"; }; + "gpt-5-mini" = { name = "GPT-5 mini"; }; + }; + }; + anthropic = { + options = { + baseURL = "https://api.langdock.com/anthropic/eu/v1"; + apiKey = config.sops.placeholder.langdock-api-key; + }; + models = { + "Opus 4.6" = { name = "opus-4.6-default"; }; + }; + }; + ollama = { + npm = "@ai-sdk/openai-compatible"; + name = "Ollama (Local)"; + options = { + baseURL = "http://192.168.11.23:11434/v1"; + }; + models = { + "qwen3-coder:30b" = { name = "Qwen 3 Coder 30B"; }; + "codellama:34b-instruct" = { name = "CodeLlama 34B Instruct"; }; + }; + }; + }; + }; + }; + + # Link the generated config to the expected location + xdg.configFile."opencode/config.json".source = config.sops.templates."opencode/config.json".path; + }; +} diff --git a/modules/nvim/lua/filetype.lua b/modules/nvim/lua/filetype.lua index 36e3a85..6099e0c 100644 --- a/modules/nvim/lua/filetype.lua +++ b/modules/nvim/lua/filetype.lua @@ -21,7 +21,9 @@ vim.api.nvim_create_autocmd('FileType', { -- require('dap-python').setup() -- require('dap-go').setup() -vim.lsp.enable('ruff') +-- vim.lsp.enable('ruff') +-- vim.lsp.config('ty') +vim.lsp.enable('ty') vim.lsp.enable('gopls') vim.lsp.enable('marksman') vim.lsp.enable('rust_analyzer')