Buckets:
| { | |
| lib, | |
| stdenvNoCC, | |
| callPackage, | |
| bun, | |
| nodejs, | |
| sysctl, | |
| makeBinaryWrapper, | |
| models-dev, | |
| ripgrep, | |
| installShellFiles, | |
| versionCheckHook, | |
| writableTmpDirAsHomeHook, | |
| node_modules ? callPackage ./node-modules.nix { }, | |
| }: | |
| stdenvNoCC.mkDerivation (finalAttrs: { | |
| pname = "opencode"; | |
| inherit (node_modules) version src; | |
| inherit node_modules; | |
| nativeBuildInputs = [ | |
| bun | |
| nodejs # for patchShebangs node_modules | |
| installShellFiles | |
| makeBinaryWrapper | |
| models-dev | |
| writableTmpDirAsHomeHook | |
| ]; | |
| configurePhase = '' | |
| runHook preConfigure | |
| cp -R ${finalAttrs.node_modules}/. . | |
| patchShebangs node_modules | |
| patchShebangs packages/*/node_modules | |
| runHook postConfigure | |
| ''; | |
| env.MODELS_DEV_API_JSON = "${models-dev}/dist/_api.json"; | |
| env.OPENCODE_DISABLE_MODELS_FETCH = true; | |
| env.OPENCODE_VERSION = finalAttrs.version; | |
| env.OPENCODE_CHANNEL = "prod"; | |
| buildPhase = '' | |
| runHook preBuild | |
| cd ./packages/opencode | |
| bun --bun ./script/build.ts --single --skip-install | |
| bun --bun ./script/schema.ts schema.json | |
| runHook postBuild | |
| ''; | |
| installPhase = '' | |
| runHook preInstall | |
| install -Dm755 dist/opencode-*/bin/opencode $out/bin/opencode | |
| install -Dm644 schema.json $out/share/opencode/schema.json | |
| wrapProgram $out/bin/opencode \ | |
| --prefix PATH : ${ | |
| lib.makeBinPath ( | |
| [ | |
| ripgrep | |
| ] | |
| # bun runs sysctl to detect if running on rosetta2 | |
| ++ lib.optional stdenvNoCC.hostPlatform.isDarwin sysctl | |
| ) | |
| } | |
| runHook postInstall | |
| ''; | |
| postInstall = lib.optionalString (stdenvNoCC.buildPlatform.canExecute stdenvNoCC.hostPlatform) '' | |
| # trick yargs into also generating zsh completions | |
| installShellCompletion --cmd opencode \ | |
| --bash <($out/bin/opencode completion) \ | |
| --zsh <(SHELL=/bin/zsh $out/bin/opencode completion) | |
| ''; | |
| nativeInstallCheckInputs = [ | |
| versionCheckHook | |
| writableTmpDirAsHomeHook | |
| ]; | |
| doInstallCheck = true; | |
| versionCheckKeepEnvironment = [ "HOME" "OPENCODE_DISABLE_MODELS_FETCH" ]; | |
| versionCheckProgramArg = "--version"; | |
| passthru = { | |
| jsonschema = "${placeholder "out"}/share/opencode/schema.json"; | |
| env = finalAttrs.env; | |
| }; | |
| meta = { | |
| description = "The open source coding agent"; | |
| homepage = "https://opencode.ai"; | |
| license = lib.licenses.mit; | |
| mainProgram = "opencode"; | |
| inherit (node_modules.meta) platforms; | |
| }; | |
| }) | |
Xet Storage Details
- Size:
- 2.46 kB
- Xet hash:
- 4098924ddb0d6a3358643bc4879ac8bcae4b91c26d9191c8a7514d14d5ec03ee
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.