Files
nixpkgs/pkgs/by-name/re/renovate/package.nix
Sefa Eyeoglu 496365ec6d treewide: adjust pnpm.fetchDeps parameter order
It is more common to specify hash as the last attribute of fetcher
function args. Let's move fetcherVersion right above hash for all
occurrences.

Signed-off-by: Sefa Eyeoglu <contact@scrumplex.net>
(cherry picked from commit a8c9a2aa3e)
2025-07-23 18:02:12 +02:00

118 lines
3.0 KiB
Nix

{
lib,
stdenv,
fetchFromGitHub,
makeWrapper,
nodejs,
pnpm_10,
python3,
testers,
xcbuild,
nixosTests,
nix-update-script,
yq-go,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "renovate";
version = "39.264.0";
src = fetchFromGitHub {
owner = "renovatebot";
repo = "renovate";
tag = finalAttrs.version;
hash = "sha256-ACeZ0RAIplcaRKyoEXFCwA/zu96CaLxTwjV0ok3TQ8w=";
};
postPatch = ''
substituteInPlace package.json \
--replace-fail "0.0.0-semantic-release" "${finalAttrs.version}"
'';
nativeBuildInputs = [
makeWrapper
nodejs
pnpm_10.configHook
python3
yq-go
] ++ lib.optional stdenv.hostPlatform.isDarwin xcbuild;
pnpmDeps = pnpm_10.fetchDeps {
inherit (finalAttrs) pname version src;
fetcherVersion = 1;
hash = "sha256-2F4vcdu2f0yh+hvs1WWM6MsWv2mmUUhzFVWN3BQvfNk=";
};
env.COREPACK_ENABLE_STRICT = 0;
buildPhase =
''
runHook preBuild
# relax nodejs version
yq '.engines.node = "${nodejs.version}"' -i package.json
pnpm build
find -name 'node_modules' -type d -exec rm -rf {} \; || true
pnpm install --offline --prod --ignore-scripts
''
# The optional dependency re2 is not built by pnpm and needs to be built manually.
# If re2 is not built, you will get an annoying warning when you run renovate.
+ ''
pushd node_modules/.pnpm/re2*/node_modules/re2
mkdir -p $HOME/.node-gyp/${nodejs.version}
echo 9 > $HOME/.node-gyp/${nodejs.version}/installVersion
ln -sfv ${nodejs}/include $HOME/.node-gyp/${nodejs.version}
export npm_config_nodedir=${nodejs}
npm run rebuild
popd
runHook postBuild
'';
# TODO: replace with `pnpm deploy`
# now it fails to build with ERR_PNPM_NO_OFFLINE_META
# see https://github.com/pnpm/pnpm/issues/5315
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,lib/node_modules/renovate}
cp -r dist node_modules package.json renovate-schema.json $out/lib/node_modules/renovate
makeWrapper "${lib.getExe nodejs}" "$out/bin/renovate" \
--add-flags "$out/lib/node_modules/renovate/dist/renovate.js"
makeWrapper "${lib.getExe nodejs}" "$out/bin/renovate-config-validator" \
--add-flags "$out/lib/node_modules/renovate/dist/config-validator.js"
runHook postInstall
'';
passthru = {
tests = {
version = testers.testVersion { package = finalAttrs.finalPackage; };
vm-test = nixosTests.renovate;
};
updateScript = nix-update-script {
extraArgs = [
"--version-regex"
"^(\\d+\\.\\d+\\.\\d+)$"
];
};
};
meta = {
description = "Cross-platform Dependency Automation by Mend.io";
homepage = "https://github.com/renovatebot/renovate";
changelog = "https://github.com/renovatebot/renovate/releases/tag/${finalAttrs.version}";
license = lib.licenses.agpl3Only;
maintainers = with lib.maintainers; [
marie
natsukium
];
mainProgram = "renovate";
platforms = nodejs.meta.platforms;
};
})