59a94b57f0
To make updating large attribute sets faster, the update scripts are now run in parallel. Please note the following changes in semantics: - The string passed to updateScript needs to be a path to an executable file. - The updateScript can also be a list: the tail elements will then be passed to the head as command line arguments.
29 lines
966 B
Nix
29 lines
966 B
Nix
{ stdenv
|
|
, lib
|
|
, writeScript
|
|
, coreutils
|
|
, curl
|
|
, gnugrep
|
|
, jq
|
|
, gnupg
|
|
, common-updater-scripts
|
|
, majorVersion
|
|
, nix
|
|
}:
|
|
|
|
writeScript "update-nodejs" ''
|
|
#!${stdenv.shell}
|
|
PATH=${lib.makeBinPath [ common-updater-scripts coreutils curl gnugrep jq gnupg nix ]}
|
|
|
|
HOME=`mktemp -d`
|
|
cat ${./nodejs-release-keys.asc} | gpg --import
|
|
|
|
tags=`curl --silent https://api.github.com/repos/nodejs/node/git/refs/tags`
|
|
version=`echo $tags | jq -r '.[] | select(.ref | startswith("refs/tags/v${majorVersion}")) | .ref' | sort --version-sort | tail -1 | grep -oP "^refs/tags/v\K.*"`
|
|
|
|
curl --silent -o $HOME/SHASUMS256.txt.asc https://nodejs.org/dist/v''${version}/SHASUMS256.txt.asc
|
|
hash_hex=`gpgv --keyring=$HOME/.gnupg/pubring.kbx --output - $HOME/SHASUMS256.txt.asc | grep -oP "^([0-9a-f]{64})(?=\s+node-v''${version}.tar.xz$)"`
|
|
hash=`nix-hash --type sha256 --to-base32 ''${hash_hex}`
|
|
|
|
update-source-version nodejs-${majorVersion}_x "''${version}" "''${hash}"
|
|
''
|