nix all the things
1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7let
8 opencodePkg = pkgs.symlinkJoin {
9 name = "opencode.wrapped";
10 paths = [
11 pkgs.opencode
12 pkgs.nixd
13 ];
14 buildInputs = [ pkgs.makeWrapper ];
15 postBuild = ''
16 wrapProgram $out/bin/opencode \
17 --set SHELL ${lib.getExe pkgs.bash}
18 '';
19 };
20in
21{
22 config = lib.mkIf config.dev.tools.enable {
23 xdg.configFile."opencode/agent" = {
24 source = ./opencode-agents;
25 recursive = true;
26 };
27
28 programs.opencode = {
29 enable = true;
30 package = opencodePkg;
31 enableMcpIntegration = true;
32 settings = {
33 theme = "catppuccin-macchiato";
34 mcp = {
35 gopls = {
36 type = "local";
37 enabled = true;
38 command = [
39 "gopls"
40 "mcp"
41 ];
42 };
43 };
44 };
45 };
46 };
47}