main
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 homeManager = {pkgs, ...}: {
19 programs.opencode = {
20 enable = true;
21 package = pkgs.llm-agents.opencode;
22 settings = {
23 permission = {
24 external_directory = {
25 "/nix/store/**" = "allow";
26 };
27 edit = {
28 "*" = "ask";
29 "/nix/store/**" = "deny";
30 };
31 grep = {
32 "/nix/store" = "deny";
33 };
34 webfetch = "ask";
35 };
36 mcp = {
37 deepwiki = {
38 type = "remote";
39 url = "https://mcp.deepwiki.com/mcp";
40 };
41 };
42 formatter = {
43 alejandra = {
44 command = ["alejandra" "$FILE"];
45 extensions = [".nix"];
46 };
47 };
48 plugin = [
49 "opencode-wakatime"
50 "@simonwjackson/opencode-direnv"
51 ];
52 skills = {
53 grilling = ./skills/grilling;
54 jujutsu = ./skills/jujutsu;
55 };
56 };
57 };
58 };
59 };
60
61 den.aspects.develop.opencode.themes = {
62 catppuccin = {
63 homeManager = {
64 programs.opencode = {
65 tui.theme = "catppuccin";
66 };
67 };
68 };
69 };
70}