1526a1b041
This will add `passthru.schema_version` to be used as default value for the adguardhome module. It will also update the `update.sh` to keep the `schema_version` in sync with the version by inspecting the sourcecode. This might break existing configs, if they use deprecated values that don't appear in newer schema_versions and schema_version wasn't set explicitly. Explicit declarations of schema_version always have higher priority. This also removes the `host` and `config` settings in favour of using the appropriate `settings`. Fixes #173938 Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
46 lines
1.6 KiB
Bash
Executable File
46 lines
1.6 KiB
Bash
Executable File
#! /usr/bin/env nix-shell
|
|
#! nix-shell -i bash -p curl gnugrep nix-prefetch jq
|
|
|
|
# This file is based on /pkgs/servers/gotify/update.sh
|
|
|
|
set -euo pipefail
|
|
|
|
dirname="$(dirname "$0")"
|
|
bins="$dirname/bins.nix"
|
|
|
|
latest_release=$(curl --silent https://api.github.com/repos/AdguardTeam/AdGuardHome/releases/latest)
|
|
version=$(jq -r '.tag_name' <<<"$latest_release")
|
|
|
|
echo "got version $version"
|
|
|
|
schema_version=$(curl --silent "https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/${version}/internal/home/upgrade.go" \
|
|
| grep -Po '(?<=const currentSchemaVersion = )[[:digit:]]+$')
|
|
|
|
echo "got schema_version $schema_version"
|
|
|
|
declare -A systems
|
|
systems[linux_386]=i686-linux
|
|
systems[linux_amd64]=x86_64-linux
|
|
systems[linux_arm64]=aarch64-linux
|
|
systems[darwin_amd64]=x86_64-darwin
|
|
systems[darwin_arm64]=aarch64-darwin
|
|
|
|
echo '{ fetchurl, fetchzip }:' > "$bins"
|
|
echo '{' >> "$bins"
|
|
|
|
for asset in $(curl --silent https://api.github.com/repos/AdguardTeam/AdGuardHome/releases/latest | jq -c '.assets[]') ; do
|
|
url="$(jq -r '.browser_download_url' <<< "$asset")"
|
|
adg_system="$(grep -Eo '(darwin|linux)_(386|amd64|arm64)' <<< "$url" || true)"
|
|
if [ -n "$adg_system" ]; then
|
|
fetch="$(grep '\.zip$' <<< "$url" > /dev/null && echo fetchzip || echo fetchurl)"
|
|
nix_system=${systems[$adg_system]}
|
|
nix_src="$(nix-prefetch -s --output nix $fetch --url $url)"
|
|
echo "$nix_system = $fetch $nix_src;" >> $bins
|
|
fi
|
|
done
|
|
|
|
echo '}' >> "$bins"
|
|
|
|
sed -i -r -e "s/version\s*?=\s*?.*?;/version = \"${version#v}\";/" "$dirname/default.nix"
|
|
sed -i -r -e "s/schema_version\s*?=\s*?.*?;/schema_version = ${schema_version};/" "$dirname/default.nix"
|