#! /usr/bin/env sh set -e tmpHomePath="$(mktemp -d "${TMPDIR:-/tmp}/nix-prefetch-url-XXXXXXXXXX")" cleanup() { chmod -R u+w "$tmpHomePath" rm -rf "$tmpHomePath" } trap cleanup EXIT info() { echo "$1" 1>&2 } # Returns a name based on the url and reference # # This function needs to be in sync with nix's fetchgit implementation # of urlToName() to re-use the same nix store paths. url_to_name() { url=$1 basename "$url" .git | cut -d: -f2 } get_sha256() { url="$1" storePathName="$(url_to_name "$url")" hashType="sha256" tmpOut="$tmpHomePath/$storePathName" info "Prefetching '$url'..." curl --follow "$url" >"$tmpOut" # Compute the hash. hash=$(nix-hash --flat --type "$hashType" --sri "$tmpOut") # Add the downloaded file to the Nix store. finalPath=$(nix-store --add-fixed "$hashType" "$tmpOut") info " -> Downloaded to '$finalPath'" echo "$hash" } old_version="$(jq .version --raw-output <./files.json)" new_version="$(curl --follow https://download.tails.net/tails/stable/ 2>/dev/null | html2text -links | grep --regexp='\s*[0-9]\. tails-amd64-' | sed 's/\s*[0-9]\. tails-amd64-\(.*\)\//\1/')" if [ "$old_version" = "$new_version" ]; then # No need to update. info exit 0 fi final_version="amd64-$new_version" cat <