nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 60 lines 1.6 kB view raw
1#!/usr/bin/env nix-shell 2#!nix-shell -i bash -p nix coreutils prefetch-yarn-deps jq curl 3 4if [ "$#" -gt 1 ] || [[ "$1" == -* ]]; then 5 echo "Regenerates packaging data for the element packages." 6 echo "Usage: $0 [git release tag]" 7 exit 1 8fi 9 10version="$1" 11 12set -euo pipefail 13 14if [ -z "$version" ]; then 15 version="$(curl -fsSL "https://api.github.com/repos/element-hq/element-desktop/releases/latest" | jq -r '.tag_name')" 16fi 17 18# strip leading "v" 19version="${version#v}" 20 21cd "$(dirname "${BASH_SOURCE[0]}")" || exit 1 22 23nixflags=( 24 --extra-experimental-features 25 "nix-command flakes" 26) 27 28# HACK: prefetch-yarn-deps hashes may output extra clutter on stdout (!) so 29# we'll need to get the last line, last word 30fixupHash() { 31 local sorta_yarn_hash="$(tail -n1 <<< "$1")" 32 local almost_yarn_hash="${sorta_yarn_hash##* }" 33 local yarn_hash="$(nix "${nixflags[@]}" hash convert --hash-algo sha256 "$almost_yarn_hash")" 34 35 printf "%s" "$yarn_hash" 36} 37 38getHashes() { 39 variant="$1" 40 output="$2" 41 42 local url="github:element-hq/element-$variant/v$version" 43 local src="$(nix "${nixflags[@]}" flake prefetch --json "$url")" 44 local src_hash="$(jq -r ".hash" <<< "$src")" 45 local src_path="$(jq -r ".storePath" <<< "$src")" 46 local yarn_hash="$(fixupHash "$(prefetch-yarn-deps "$src_path/yarn.lock")")" 47 48 cat > "$output" << EOF 49{ 50 "version" = "$version"; 51 "hashes" = { 52 "${variant}SrcHash" = "$src_hash"; 53 "${variant}YarnHash" = "$yarn_hash"; 54 }; 55} 56EOF 57} 58 59getHashes web ../element-web-unwrapped/element-web-pin.nix 60getHashes desktop element-desktop-pin.nix