Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1#!/usr/bin/env nix-shell 2#!nix-shell -i bash -p curl common-updater-scripts nix-prefetch-scripts jq 3 4set -xeuo pipefail 5 6nixpkgs="$(git rev-parse --show-toplevel)" 7 8attr=virtualbox 9oldVersion="$(nix-instantiate --eval -E "with import $nixpkgs {}; $attr.version or (builtins.parseDrvName $attr.name).version" | tr -d '"')" 10latestVersion="$(curl -sS https://download.virtualbox.org/virtualbox/LATEST.TXT)" 11 12function fileShaSum() { 13 echo "$1" | grep -w "$2" | cut -f1 -d' ' 14} 15function oldHash() { 16 nix-instantiate --eval --strict -A "$1.drvAttrs.outputHash" | tr -d '"' 17} 18function nixFile() { 19 nix-instantiate --eval --strict -A "${1}.meta.position" | sed -re 's/^"(.*):[0-9]+"$/\1/' 20} 21 22if [ ! "$oldVersion" = "$latestVersion" ]; then 23 shaSums=$(curl -sS "https://download.virtualbox.org/virtualbox/$latestVersion/SHA256SUMS") 24 25 virtualBoxShaSum=$(fileShaSum "$shaSums" "VirtualBox-$latestVersion.tar.bz2") 26 extpackShaSum=$(fileShaSum "$shaSums" "Oracle_VirtualBox_Extension_Pack-$latestVersion.vbox-extpack") 27 guestAdditionsIsoShaSum=$(fileShaSum "$shaSums" "*VBoxGuestAdditions_$latestVersion.iso") 28 29 virtualboxNixFile=$(nixFile ${attr}) 30 extpackNixFile=$(nixFile ${attr}Extpack) 31 guestAdditionsIsoNixFile="pkgs/applications/virtualization/virtualbox/guest-additions-iso/default.nix" 32 virtualboxGuestAdditionsNixFile="pkgs/applications/virtualization/virtualbox/guest-additions/default.nix" 33 34 virtualBoxOldShaSum=$(oldHash ${attr}Extpack) 35 extpackOldShaSum=$(oldHash ${attr}Extpack) 36 37 sed -e "s/virtualboxVersion = \".*\";/virtualboxVersion = \"$latestVersion\";/g" \ 38 -e "s/virtualboxSubVersion = \".*\";/virtualboxSubVersion = \"\";/g" \ 39 -e "s/virtualboxSha256 = \".*\";/virtualboxSha256 = \"$virtualBoxShaSum\";/g" \ 40 -i "$virtualboxNixFile" 41 sed -e 's|value = "'$extpackOldShaSum'"|value = "'$extpackShaSum'"|' \ 42 -e "s/virtualboxExtPackVersion = \".*\";/virtualboxExtPackVersion = \"$latestVersion\";/g" \ 43 -i $extpackNixFile 44 sed -e "s/sha256 = \".*\";/sha256 = \"$guestAdditionsIsoShaSum\";/g" \ 45 -i "$guestAdditionsIsoNixFile" 46 sed -e "s/virtualboxVersion = \".*\";/virtualboxVersion = \"$latestVersion\";/g" \ 47 -e "s/virtualboxSubVersion = \".*\";/virtualboxSubVersion = \"\";/g" \ 48 -e "s/virtualboxSha256 = \".*\";/virtualboxSha256 = \"$virtualBoxShaSum\";/g" \ 49 -i "$virtualboxGuestAdditionsNixFile" 50 51 git add "$virtualboxNixFile" "$extpackNixFile" "$guestAdditionsIsoNixFile" "$virtualboxGuestAdditionsNixFile" 52 git commit -m "$attr: ${oldVersion} -> ${latestVersion}" 53else 54 echo "$attr is already up-to-date" 55fi