17 stdenv.mkDerivation (finalAttrs: {
21 src = fetchFromGitHub {
22 owner = "renovatebot";
24 tag = finalAttrs.version;
25 hash = "sha256-QKCUHwm6c50wTDFbmAqhh/tV8Lzx9HD4U9k7ke6t8OE=";
29 substituteInPlace package.json \
30 --replace-fail "0.0.0-semantic-release" "${finalAttrs.version}"
39 ] ++ lib.optional stdenv.hostPlatform.isDarwin xcbuild;
41 pnpmDeps = pnpm_9.fetchDeps {
42 inherit (finalAttrs) pname version src;
43 hash = "sha256-MTkbRQnimEXP4XepJ+x2KGHtJTkqN9WBWvisAHH/j18=";
46 env.COREPACK_ENABLE_STRICT = 0;
52 # relax nodejs version
53 yq '.engines.node = "${nodejs.version}"' -i package.json
56 pnpm prune --prod --ignore-scripts
58 # The optional dependency re2 is not built by pnpm and needs to be built manually.
59 # If re2 is not built, you will get an annoying warning when you run renovate.
61 pushd node_modules/.pnpm/re2*/node_modules/re2
63 mkdir -p $HOME/.node-gyp/${nodejs.version}
64 echo 9 > $HOME/.node-gyp/${nodejs.version}/installVersion
65 ln -sfv ${nodejs}/include $HOME/.node-gyp/${nodejs.version}
66 export npm_config_nodedir=${nodejs}
74 # TODO: replace with `pnpm deploy`
75 # now it fails to build with ERR_PNPM_NO_OFFLINE_META
76 # see https://github.com/pnpm/pnpm/issues/5315
80 mkdir -p $out/{bin,lib/node_modules/renovate}
81 cp -r dist node_modules package.json renovate-schema.json $out/lib/node_modules/renovate
83 makeWrapper "${lib.getExe nodejs}" "$out/bin/renovate" \
84 --add-flags "$out/lib/node_modules/renovate/dist/renovate.js"
85 makeWrapper "${lib.getExe nodejs}" "$out/bin/renovate-config-validator" \
86 --add-flags "$out/lib/node_modules/renovate/dist/config-validator.js"
93 version = testers.testVersion { package = finalAttrs.finalPackage; };
94 vm-test = nixosTests.renovate;
96 updateScript = nix-update-script { };
100 description = "Cross-platform Dependency Automation by Mend.io";
101 homepage = "https://github.com/renovatebot/renovate";
102 changelog = "https://github.com/renovatebot/renovate/releases/tag/${finalAttrs.version}";
103 license = lib.licenses.agpl3Only;
104 maintainers = with lib.maintainers; [
108 mainProgram = "renovate";
109 platforms = nodejs.meta.platforms;