a dotfile but it's really big
at main 68 lines 1.5 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7let 8 opencodePkg = pkgs.symlinkJoin { 9 name = "opencode.wrapped"; 10 paths = [ pkgs.opencode ]; 11 buildInputs = [ pkgs.makeWrapper ]; 12 postBuild = '' 13 wrapProgram $out/bin/opencode \ 14 --set SHELL ${lib.getExe pkgs.bash} 15 ''; 16 }; 17 18 cfg = config.dev.opencode; 19in 20lib.mkIf cfg.enable { 21 xdg.configFile."opencode/agents" = { 22 source = ./agents; 23 recursive = true; 24 }; 25 26 xdg.configFile."opencode/skills" = { 27 source = ./skills; 28 recursive = true; 29 }; 30 31 xdg.configFile."opencode/AGENTS.md".source = ./AGENTS.md; 32 33 programs.opencode = { 34 enable = true; 35 package = opencodePkg; 36 enableMcpIntegration = cfg.enableMcp; 37 settings = { 38 inherit (cfg) theme; 39 default_agent = "orchestrator"; 40 permission = { 41 todoread = "deny"; 42 todowrite = "deny"; 43 external_directory = lib.genAttrs [ "~/go/pkg/mod/**" ] (_: "allow"); 44 }; 45 mcp = lib.mkIf cfg.enableMcp { 46 gopls = { 47 type = "local"; 48 enabled = true; 49 command = [ 50 "gopls" 51 "mcp" 52 ]; 53 }; 54 github = { 55 type = "remote"; 56 url = "https://api.githubcopilot.com/mcp/"; 57 headers = { 58 Authorization = "Bearer {env:GITHUB_TOKEN}"; 59 }; 60 enabled = false; 61 }; 62 }; 63 }; 64 }; 65 66 programs.git.ignores = lib.mkIf cfg.enableLangRules [ ".rules" ]; 67 programs.helix.ignores = lib.mkIf cfg.enableLangRules [ "!.rules" ]; 68}