{ lib, stdenvNoCC, fetchFromGitHub, fetchYarnDeps, yarnConfigHook, yarnBuildHook, nodejs, jq, }: stdenvNoCC.mkDerivation (finalAttrs: { pname = "eas-cli"; version = "16.4.0"; src = fetchFromGitHub { owner = "expo"; repo = "eas-cli"; rev = "v${finalAttrs.version}"; hash = "sha256-cHayMBhqiLY//t/ljjwJm4qMuVn531z7x2cqJE4z6hQ="; }; yarnOfflineCache = fetchYarnDeps { yarnLock = finalAttrs.src + "/yarn.lock"; # Point to the root lockfile hash = "sha256-qDUwAdShpKjIUyYvtA6/hgGdO1z1xLqdsJkL3oqkMSw="; }; nativeBuildInputs = [ yarnConfigHook yarnBuildHook nodejs jq ]; # yarnInstallHook strips out build outputs within packages/eas-cli resulting in most commands missing from eas-cli. installPhase = '' runHook preInstall mkdir -p $out/lib/node_modules/eas-cli-root cp -r . $out/lib/node_modules/eas-cli-root runHook postInstall ''; # postFixup is used to override the symlink created in the fixupPhase postFixup = '' mkdir -p $out/bin ln -sf $out/lib/node_modules/eas-cli-root/packages/eas-cli/bin/run $out/bin/eas ''; meta = { changelog = "https://github.com/expo/eas-cli/releases/tag/v${finalAttrs.version}"; description = "EAS command line tool from submodule"; homepage = "https://github.com/expo/eas-cli"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ zestsystem ]; }; })