a dotfile but it's really big
0
fork

Configure Feed

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

at 9a5ae2f85c554470194e4b028d8120fcbf18ba3f 129 lines 3.0 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 13 nativeBuildInputs = [ pkgs.makeWrapper ]; 14 15 postBuild = '' 16 wrapProgram $out/bin/opencode \ 17 --set OPENCODE_EXPERIMENTAL_LSP_TOOL true \ 18 --set OPENCODE_DISABLE_LSP_DOWNLOAD true \ 19 --set OPENCODE_DISABLE_AUTOUPDATE true \ 20 --set OPENCODE_EXPERIMENTAL_MARKDOWN true \ 21 --set SHELL "${lib.getExe pkgs.bash}" \ 22 --prefix PATH : "${ 23 lib.makeBinPath [ 24 pkgs.golangci-lint-langserver 25 pkgs.nixd 26 pkgs.marksman 27 pkgs.typescript-language-server 28 pkgs.vscode-langservers-extracted 29 pkgs.yaml-language-server 30 pkgs.typos-lsp 31 pkgs.nil 32 ] 33 }" 34 ''; 35 }; 36 37 cfg = config.dev.opencode; 38in 39lib.mkIf cfg.enable { 40 xdg.configFile."opencode/skills".source = pkgs.symlinkJoin { 41 name = "opencode-skills"; 42 paths = [ 43 self'.packages.strands-sops-skills 44 ./skills 45 ]; 46 }; 47 48 programs.opencode = { 49 enable = true; 50 package = opencodePkg; 51 enableMcpIntegration = cfg.enableMcp; 52 context = ./AGENTS.md; 53 commands = ./commands; 54 agents = ./agents; 55 settings = { 56 plugin = [ "@mohak34/opencode-notifier@0.2.2" ]; 57 experimental = { 58 batch_tool = true; 59 }; 60 inherit (cfg) theme; 61 default_agent = "ask"; 62 formatter = { 63 nixfmt = { 64 command = [ 65 "nixfmt" 66 "-s" 67 "-w" 68 "120" 69 "$FILE" 70 ]; 71 extensions = [ ".nix" ]; 72 }; 73 gofmt = { 74 disabled = true; 75 }; 76 goimports = { 77 command = [ 78 "goimports" 79 "-w" 80 "$FILE" 81 ]; 82 extensions = [ ".go" ]; 83 }; 84 sql-formatter = { 85 command = [ 86 "sql-formatter" 87 "-c" 88 (builtins.toJSON { 89 keywordCase = "upper"; 90 functionCase = "upper"; 91 dataTypeCase = "upper"; 92 identifierCase = "lower"; 93 language = "postgresql"; 94 expressionWidth = 80; 95 tabWidth = 2; 96 }) 97 "$FILE" 98 ]; 99 extensions = [ ".sql" ]; 100 }; 101 nufmt = { 102 command = [ 103 "nufmt" 104 "--stdin" 105 ]; 106 extensions = [ ".nu" ]; 107 }; 108 }; 109 permission = { 110 todoread = "deny"; 111 todowrite = "deny"; 112 external_directory = { 113 "~/*" = "allow"; # yolo. 114 "/tmp/*" = "allow"; 115 }; 116 }; 117 mcp = lib.mkIf cfg.enableMcp { 118 github = { 119 type = "remote"; 120 url = "https://api.githubcopilot.com/mcp/"; 121 headers = { 122 Authorization = "Bearer {env:GITHUB_TOKEN}"; 123 }; 124 enabled = false; 125 }; 126 }; 127 }; 128 }; 129}