a dotfile but it's really big
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 78498ef6dc07f5d4e5d9b612e99a909ebcec95b5 136 lines 3.2 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 self', 6 ... 7}: 8let 9 opencodePkg = pkgs.symlinkJoin { 10 name = "opencode.wrapped"; 11 paths = [ pkgs.opencode ]; 12 buildInputs = [ pkgs.makeWrapper ]; 13 postBuild = '' 14 wrapProgram $out/bin/opencode \ 15 --set SHELL ${lib.getExe pkgs.bash} 16 ''; 17 }; 18 19 mergedSkills = pkgs.runCommand "strands-sops-skills-merged" { } '' 20 mkdir $out 21 cp -r ${self'.packages.strands-sops-skills}/* $out/ 22 cp -r ${./skills}/* $out/ 23 ''; 24 25 cfg = config.dev.opencode; 26in 27lib.mkIf cfg.enable { 28 home.packages = [ self'.packages.strands-agents-sops ]; 29 30 xdg.configFile."opencode/agents" = { 31 source = ./agents; 32 recursive = true; 33 }; 34 35 xdg.configFile."opencode/skills" = { 36 source = mergedSkills; 37 recursive = true; 38 }; 39 40 xdg.configFile."opencode/commands" = { 41 source = self'.packages.strands-sops-commands; 42 recursive = true; 43 }; 44 45 xdg.configFile."opencode/AGENTS.md".source = ./AGENTS.md; 46 47 # Notifier config omitted — plugin uses all defaults. 48 # If customization is needed, add xdg.configFile."opencode/opencode-notifier.json".text = builtins.toJSON { ... }; 49 50 programs.opencode = { 51 enable = true; 52 package = opencodePkg; 53 enableMcpIntegration = cfg.enableMcp; 54 settings = { 55 plugin = [ "@mohak34/opencode-notifier@latest" ]; 56 inherit (cfg) theme; 57 default_agent = "orchestrator"; 58 formatter = { 59 nixfmt = { 60 command = [ 61 "nixfmt" 62 "-s" 63 "-w" 64 "120" 65 "$FILE" 66 ]; 67 extensions = [ ".nix" ]; 68 }; 69 gofmt = { 70 disabled = true; 71 }; 72 goimports = { 73 command = [ 74 "goimports" 75 "-w" 76 "$FILE" 77 ]; 78 extensions = [ ".go" ]; 79 }; 80 sql-formatter = { 81 command = [ 82 "sql-formatter" 83 "-c" 84 (builtins.toJSON { 85 keywordCase = "upper"; 86 functionCase = "upper"; 87 dataTypeCase = "upper"; 88 identifierCase = "lower"; 89 language = "postgresql"; 90 expressionWidth = 80; 91 tabWidth = 2; 92 }) 93 "$FILE" 94 ]; 95 extensions = [ ".sql" ]; 96 }; 97 topiary-nu = { 98 command = [ 99 "${lib.getExe self'.packages.topiary-nu}" 100 "format" 101 "--language" 102 "nu" 103 "$FILE" 104 ]; 105 extensions = [ ".nu" ]; 106 }; 107 }; 108 permission = { 109 todoread = "deny"; 110 todowrite = "deny"; 111 external_directory = { 112 "~/*" = "allow"; # yolo. 113 "/tmp/*" = "allow"; 114 }; 115 }; 116 mcp = lib.mkIf cfg.enableMcp { 117 gopls = { 118 type = "local"; 119 enabled = true; 120 command = [ 121 "gopls" 122 "mcp" 123 ]; 124 }; 125 github = { 126 type = "remote"; 127 url = "https://api.githubcopilot.com/mcp/"; 128 headers = { 129 Authorization = "Bearer {env:GITHUB_TOKEN}"; 130 }; 131 enabled = false; 132 }; 133 }; 134 }; 135 }; 136}