summary refs log tree commit diff
path: root/pkgs/development/web/nodejs/update.nix
blob: bf6951dc6882a3842c1df3d5baec7ed669fdb2a5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{ 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}"
''