75 lines
1.9 KiB
Nix
75 lines
1.9 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
buildNpmPackage,
|
|
nodejs_22,
|
|
makeWrapper,
|
|
autoPatchelfHook,
|
|
llvmPackages,
|
|
}:
|
|
buildNpmPackage (finalAttrs: {
|
|
pname = "cf";
|
|
version = (lib.importJSON ./cf/package.json).dependencies.cf;
|
|
|
|
# Use the published CLI bundle. The upstream source build needs a monorepo.
|
|
src = ./cf;
|
|
nodejs = nodejs_22;
|
|
npmDepsHash = "sha256-8acS8VekfuKmihOUsq44Ba5xZ4Qr2Mbf89anb/THvTM=";
|
|
dontNpmBuild = true;
|
|
|
|
# Native dependencies ship platform-specific binaries in optional packages.
|
|
# Disable install scripts that can download binaries outside the Nix cache.
|
|
npmFlags = [ "--ignore-scripts" ];
|
|
npmInstallFlags = lib.optionals stdenv.hostPlatform.isLinux [ "--libc=glibc" ];
|
|
|
|
nativeBuildInputs = [
|
|
makeWrapper
|
|
]
|
|
++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
|
|
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
|
|
stdenv.cc.cc.lib
|
|
llvmPackages.libcxx
|
|
];
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p "$out/lib" "$out/bin"
|
|
cp -r node_modules "$out/lib/"
|
|
makeWrapper ${lib.getExe nodejs_22} "$out/bin/cf" \
|
|
--add-flags "$out/lib/node_modules/cf/bin/cf"
|
|
ln -s cf "$out/bin/cloudflare"
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
doInstallCheck = true;
|
|
installCheckPhase = ''
|
|
runHook preInstallCheck
|
|
|
|
export HOME="$TMPDIR/cf-home"
|
|
mkdir -p "$HOME"
|
|
"$out/bin/cf" --version | grep -F '${finalAttrs.version}'
|
|
"$out/bin/cloudflare" --help > /dev/null
|
|
"$out/lib/node_modules/.bin/workerd" --version
|
|
NODE_PATH="$out/lib/node_modules" ${lib.getExe nodejs_22} -e 'require("sharp")'
|
|
|
|
runHook postInstallCheck
|
|
'';
|
|
|
|
meta = {
|
|
description = "Command-line interface for the Cloudflare API";
|
|
homepage = "https://github.com/cloudflare/cf";
|
|
license = with lib.licenses; [
|
|
mit
|
|
asl20
|
|
];
|
|
mainProgram = "cf";
|
|
platforms = [
|
|
"aarch64-darwin"
|
|
"x86_64-darwin"
|
|
"aarch64-linux"
|
|
"x86_64-linux"
|
|
];
|
|
};
|
|
})
|