nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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