{ lib, mkDerivation, fetchFromGitHub, pnpm, node, jq, makeWrapper, }: mkDerivation (finalAttrs: { pname = "codex-cli"; version = "0.8.0"; src = fetchFromGitHub { owner = "openai"; repo = "codex"; rev = "4082246f6aac288a817330b92cfd5573df61f0e7"; # tag = "v${finalAttrs.version}"; sha256 = "DAenod/w9BydYdYsOnuLj7kCQRcTnZ81tf4MhLUug6c="; }; pnpmDeps = pnpm.fetchDeps { inherit (finalAttrs) pname version src; hash = "sha256-otogkSsKJ5j1BY00y4SRhL9pm7CK9nmzVisvGCDIMlU="; }; nativeBuildInputs = [ node pnpm pnpm.configHook jq makeWrapper ]; pnpmInstallFlags = ["--frozen-lockfile"]; buildPhase = '' runHook preBuild pnpm install --offline --frozen-lockfile pnpm --filter ./codex-cli... run build runHook postBuild ''; installPhase = '' runHook preInstall pkgRoot=$out/lib/node_modules/${final.pname} mkdir -p $pkgRoot cp -R codex-cli/* $pkgRoot/ path=$(jq -r '.bin.codex' codex-cli/package.json) mkdir -p $out/bin makeWrapper ${node}/bin/node $out/bin/codex --add-flags "$pkgRoot/$path" runHook postInstall ''; meta = with lib; { description = "OpenAI Codex command‑line interface"; license = licenses.asl20; homepage = "https://github.com/openai/codex"; }; })