Files
nixpkgs/pkgs/by-name/cd/cdktf-cli/package.nix
Dark Steveneq 646b892680
Some checks failed
Periodic Merges (6h) / master → staging-nixos (push) Failing after 12m50s
Periodic Merges (6h) / master → staging-next (push) Failing after 12m54s
Periodic Merges (24h) / merge-base(master,staging) → haskell-updates (push) Failing after 11m54s
Periodic Merges (6h) / staging-next → staging (push) Failing after 12m13s
Periodic Merges (24h) / staging-next-25.05 → staging-25.05 (push) Failing after 13m24s
Periodic Merges (24h) / release-25.05 → staging-next-25.05 (push) Failing after 14m28s
push sheeet
2025-10-09 14:15:47 +02:00

159 lines
4.0 KiB
Nix

{
lib,
stdenv,
buildGoModule,
faketty,
fetchFromGitHub,
fetchYarnDeps,
fixup-yarn-lock,
go,
makeWrapper,
nodejs,
nix-update-script,
patchelf,
removeReferencesTo,
testers,
yarn,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "cdktf-cli";
version = "0.21.0";
src = fetchFromGitHub {
owner = "hashicorp";
repo = "terraform-cdk";
tag = "v${finalAttrs.version}";
hash = "sha256-iqy8j1bqwjSRBOj8kjFtAq9dLiv6dDbJsiFGQUhGW7k=";
};
offlineCache = fetchYarnDeps {
yarnLock = "${finalAttrs.src}/yarn.lock";
hash = "sha256-qGjzy/+u8Ui9aHK0sX3MfYbkj5Cqab4RlhOgrwbEmGs=";
};
hcl2json-go-modules =
(buildGoModule {
pname = "cdktf-hcl2json-go-modules";
inherit (finalAttrs) version src;
modRoot = "packages/@cdktf/hcl2json";
vendorHash = "sha256-OiKPq0CHkOxJaFzgsaNJ02tasvHtHWylmaPRPayJob4=";
proxyVendor = true;
doCheck = false;
env.GOWORK = "off";
}).goModules;
hcltools-go-modules =
(buildGoModule {
pname = "cdktf-hcltools-go-modules";
inherit (finalAttrs) version src;
modRoot = "packages/@cdktf/hcl-tools";
vendorHash = "sha256-orGxkYEQVtTKvXb7/FD/CLwqSINgBQFTF5arbR0xAvE=";
proxyVendor = true;
doCheck = false;
env.GOWORK = "off";
}).goModules;
strictDeps = true;
disallowedReferences = [ go ];
nativeBuildInputs = [
faketty
fixup-yarn-lock
go
makeWrapper
nodejs
patchelf
removeReferencesTo
yarn
];
postPatch = ''
# wasm_exec has moved to lib in newer versions of Go
substituteInPlace packages/@cdktf/hcl-tools/prebuild.sh \
--replace-fail "misc/wasm/wasm_exec.js" "lib/wasm/wasm_exec.js"
substituteInPlace packages/@cdktf/hcl2json/prebuild.sh \
--replace-fail "misc/wasm/wasm_exec.js" "lib/wasm/wasm_exec.js"
'';
preConfigure = ''
export GOCACHE=$TMPDIR/go-cache
export GOPATH=$TMPDIR/go
export GOPROXY=file://${finalAttrs.hcltools-go-modules},file://${finalAttrs.hcl2json-go-modules}
export GOSUMDB=off
# Stop the build from trying to write checkpoints to /var/empty/
export CHECKPOINT_DISABLE=1
'';
configurePhase = ''
runHook preConfigure
export HOME=$(mktemp -d)
yarn config --offline set yarn-offline-mirror $offlineCache
fixup-yarn-lock yarn.lock
yarn --offline --frozen-lockfile --ignore-platform --ignore-scripts --no-progress --non-interactive install
patchShebangs node_modules packages
runHook postConfigure
'';
buildPhase = ''
runHook preBuild
faketty yarn --offline build
runHook postBuild
'';
doCheck = true;
checkPhase = ''
runHook preCheck
# Skip tests that require terraform (unfree)
yarn --offline workspace cdktf-cli test -- \
--testPathIgnorePatterns \
"src/test/cmds/(convert|init).test.ts"
runHook postCheck
'';
installPhase = ''
runHook preInstall
yarn --offline --production install
mkdir -p "$out/lib/node_modules/cdktf-cli"
cp -rL node_modules packages/cdktf-cli/bundle packages/cdktf-cli/package.json "$out/lib/node_modules/cdktf-cli/"
makeWrapper "${lib.getExe nodejs}" "$out/bin/cdktf" \
--add-flags "$out/lib/node_modules/cdktf-cli/bundle/bin/cdktf.js"
runHook postInstall
'';
postInstall = ''
# Go isn't needed at runtime, so remove these to decrease the closure size
remove-references-to -t ${go} \
"$out/lib/node_modules/cdktf-cli/node_modules/@cdktf/hcl-tools/main.wasm" \
"$out/lib/node_modules/cdktf-cli/node_modules/@cdktf/hcl2json/main.wasm"
'';
passthru = {
tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
};
updateScript = nix-update-script { };
};
meta = {
description = "CDK for Terraform CLI";
homepage = "https://github.com/hashicorp/terraform-cdk";
changelog = "https://github.com/hashicorp/terraform-cdk/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mpl20;
mainProgram = "cdktf";
maintainers = with lib.maintainers; [ deejayem ];
platforms = lib.platforms.unix;
};
})