nix-openwrt-imagebuilder/generate-hashes.nix

48 lines
1.2 KiB
Nix
Raw Permalink Normal View History

{ pkgs ? import <nixpkgs> {} }:
2022-04-27 22:25:32 +02:00
with pkgs;
writeScriptBin "generate-hashes" ''
#! ${runtimeShell}
PATH=${lib.makeBinPath [ jq curl nix ]}:$PATH
RELEASE=21.02.3
FEEDS="base packages routing telephony"
if [ $# -gt 0 ]; then
RELEASE=$1
fi
UPSTREAM_URL=https://downloads.openwrt.org
RELEASE_URL=$UPSTREAM_URL/releases/$RELEASE
2022-04-27 22:25:32 +02:00
hash() {
TARGET=$1
2022-04-28 00:51:08 +02:00
VARIANT=$2
BASEURL=$RELEASE_URL/targets/$TARGET/$VARIANT
2022-04-27 22:25:32 +02:00
SUM=$(nix-prefetch-url --type sha256 $BASEURL/sha256sums 2>/dev/null)
if [ -n "$SUM" ]; then
2022-04-28 00:51:08 +02:00
echo " \"$TARGET\".\"$VARIANT\" = {"
2022-04-27 22:25:32 +02:00
echo " sha256 = \"$SUM\";"
ARCH=$(curl -s $BASEURL/profiles.json | jq -r .arch_packages)
[ $? -ne 0 ] && echo "failed to fetch or parse $BASEURL/profiles.json" > /dev/stderr
2022-04-27 22:25:32 +02:00
if [ -n "$ARCH" ]; then
for FEED in $FEEDS; do
PACKAGES=$(nix-prefetch-url --type sha256 $RELEASE_URL/packages/$ARCH/$FEED/Packages 2>/dev/null)
2022-04-27 22:25:32 +02:00
echo " feedsSha256.$FEED = \"$PACKAGES\";"
done
fi
echo " };"
fi
}
mkdir -p hashes
(
echo "{"
curl -s $RELEASE_URL/targets/?json-targets | jq -r .[] | while IFS=/ read TARGET VARIANT; do
hash $TARGET $VARIANT
done
2022-04-27 22:25:32 +02:00
echo "}"
) > hashes/$RELEASE.nix
2022-04-27 22:25:32 +02:00
''