Something went wrong. Try again.
a dotfile but it's really big
nix dotfiles home-manager flake
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147{ config, lib, pkgs, self', inputs', osConfig, ...}:let opencodePkg = pkgs.symlinkJoin { name = "opencode-wrapped"; paths = [ inputs'.llm-agents.packages.opencode ];
nativeBuildInputs = [ pkgs.makeWrapper ];
postBuild = '' wrapProgram $out/bin/opencode \ --set OPENCODE_EXPERIMENTAL_LSP_TOOL true \ --set OPENCODE_DISABLE_LSP_DOWNLOAD true \ --set OPENCODE_DISABLE_AUTOUPDATE true \ --set OPENCODE_EXPERIMENTAL_MARKDOWN true \ --set SHELL "${lib.getExe pkgs.bash}" \ --prefix PATH : "${ lib.makeBinPath [ self'.packages.golangci-lint-langserver pkgs.nixd pkgs.marksman pkgs.typescript-language-server pkgs.vscode-langservers-extracted pkgs.yaml-language-server pkgs.typos-lsp pkgs.nil ] }" ''; };
cfg = config.dev.opencode; osCfg = osConfig.dev.opencode;inlib.mkIf osCfg.enable { xdg.configFile = { "opencode/skills".source = pkgs.symlinkJoin { name = "opencode-skills"; paths = [ self'.packages.strands-sops-skills ./skills ]; };
};
programs.opencode = { enable = true; package = opencodePkg; enableMcpIntegration = cfg.enableMcp; commands = ./commands; agents = ./agents; settings = { instructions = [ ./AGENTS.md ]; plugin = [ "@mohak34/opencode-notifier@0.2.8" "@angdrew/opencode-hashline-plugin@v1.6.6" ]; experimental = { batch_tool = true; }; lsp = { }; inherit (cfg) theme; default_agent = "orchestrator"; formatter = { nixfmt = { command = [ "nixfmt" "-s" "-w" "120" "$FILE" ]; extensions = [ ".nix" ]; }; gofmt = { disabled = true; }; goimports = { command = [ "goimports" "-w" "$FILE" ]; extensions = [ ".go" ]; }; sql-formatter = { command = [ "sql-formatter" "-c" (builtins.toJSON { keywordCase = "upper"; functionCase = "upper"; dataTypeCase = "upper"; identifierCase = "lower"; language = "postgresql"; expressionWidth = 80; tabWidth = 2; }) "$FILE" ]; extensions = [ ".sql" ]; }; nufmt = { command = [ "nufmt" "--stdin" ]; extensions = [ ".nu" ]; }; }; permission = { todoread = "deny"; todowrite = "deny"; external_directory = { "~/*" = "allow"; # yolo. "/tmp/*" = "allow"; }; }; mcp = lib.mkIf cfg.enableMcp { github = { type = "remote"; url = "https://api.githubcopilot.com/mcp/"; headers = { Authorization = "Bearer {env:GITHUB_TOKEN}"; }; enabled = true; };
outline = { type = "remote"; url = "https://outline.dolly-ruffe.ts.net/mcp"; enabled = true; }; }; }; };
}