old
 1{den, ...}: {
 2  den.aspects.develop.agents.opencode = {
 3    includes = [den.aspects.develop.agents];
 4
 5    persistHome = {config, ...}: {
 6      directories = [
 7        "${config.xdg.configHome}/opencode"
 8      ];
 9    };
10
11    cacheHome = {config, ...}: {
12      directories = [
13        "${config.xdg.dataHome}/opencode"
14        "${config.xdg.stateHome}/opencode"
15      ];
16    };
17
18    hjem = {
19      config,
20      pkgs,
21      ...
22    }: {
23      packages = [pkgs.llm-agents.opencode];
24
25      xdg.config.files."opencode/opencode.json" = {
26        generator = (pkgs.formats.json {}).generate "opencode-config.json";
27        value = {
28          permission = {
29            external_directory = {
30              "/nix/store/**" = "allow";
31            };
32            edit = {
33              "*" = "ask";
34              "/nix/store/**" = "deny";
35            };
36            grep = {
37              "/nix/store" = "deny";
38            };
39            webfetch = "ask";
40          };
41          mcp = {
42            deepwiki = {
43              type = "remote";
44              url = "https://mcp.deepwiki.com/mcp";
45            };
46          };
47          formatter = {
48            alejandra = {
49              command = ["alejandra" "$FILE"];
50              extensions = [".nix"];
51            };
52          };
53          plugin = [
54            "opencode-wakatime"
55            "@simonwjackson/opencode-direnv"
56          ];
57        };
58      };
59
60      xdg.config.files."opencode/tui.json" = {
61        generator = (pkgs.formats.json {}).generate "opencode-config-tui.json";
62        value = {
63        };
64      };
65
66      xdg.config.files."opencode/skills" = {
67        source = "${config.xdg.config.directory}/agents/skills";
68      };
69    };
70  };
71
72  den.aspects.develop.opencode.themes = {
73    catppuccin = {
74      hjem.xdg.config.files."opencode/tui.json".value.theme = "catppuccin";
75    };
76  };
77}