nixos-configs/updateSha.sh
matt1432 b869da9668
All checks were successful
Discord / discord commits (push) Has been skipped
chore: fix update script and update flake.lock
2024-06-11 16:42:47 -04:00

110 lines
3.2 KiB
Bash
Executable file

#!/usr/bin/env bash
# Deps:
# - jq
# - mozilla-addons-to-nix
# - alejandra
# - updateImages
# - nix-fast-build
parseFetchurl() {
URL="$1"
FILE="$2"
HASH="$(nix store prefetch-file --refresh --json \
--hash-type sha256 "$URL" --name "escaped" | jq -r .hash)"
sed -i "s,url = .*,url = \"$URL\";," "$FILE"
sed -i "s,hash = .*,hash = \"$HASH\";," "$FILE"
# For Firefox addons
sed -i "s,sha256 = .*,sha256 = \"$HASH\";," "$FILE"
}
updateDocker() {
find "$FLAKE/devices/nos/modules/arion" \
-name "*compose.nix" \
-exec sh -c 'i="$1"; updateImages $(dirname "$i")' shell {} \;
}
updateFFZ() {
FILE="$FLAKE/home/firefox/addons/default.nix"
URL="https://cdn.frankerfacez.com/script/frankerfacez-4.0-an+fx.xpi"
parseFetchurl "$URL" "$FILE"
}
updateFirefoxAddons() {
echo "Updating firefox addons using mozilla-addons-to-nix"
(
cd "$FLAKE/home/firefox/addons" || return;
file=generated-firefox-addons.nix
if [[ -f $file ]]; then
readarray -t OLD_VERS <<< "$(grep -A 1 --no-group-separator 'pname' "$file" |
awk '{ gsub(/"/, ""); gsub(/;/, ""); print $3 }' |
awk 'NR%2{printf $0" version ";next;}1' | paste -sd'\n' -)"
readarray -t NEW_VERS <<< "$(sed 's/Fetched //' \
<(mozilla-addons-to-nix addons.json generated-firefox-addons.nix) |
sed 's/bitwarden-password-manager/bitwarden/' |
sed 's/600-sound-volume/sound-volume/' |
sed 's/styl-us/stylus/' |
sort)"
for (( i=0; i<${#OLD_VERS[@]}; i++ )); do
if [[ "${OLD_VERS[$i]}" != "${NEW_VERS[$i]}" ]]; then
echo "${OLD_VERS[$i]} -> $(echo "${NEW_VERS[$i]}" | awk '{print $NF}')"
fi
done
else
mozilla-addons-to-nix addons.json generated-firefox-addons.nix
fi
)
}
updateVuetorrent() {
FILE="$FLAKE/devices/nos/modules/qbittorrent/vuetorrent.nix"
release=$(curl -s https://api.github.com/repos/VueTorrent/VueTorrent/releases/latest)
version=$(echo "$release" | jq -r .tag_name | tr -d v)
url="https://github.com/VueTorrent/VueTorrent/releases/download/v${version}/vuetorrent.zip"
hash="$(nix store prefetch-file --refresh --json \
--hash-type sha256 "$url" --name "escaped" | jq -r .hash)"
{
echo '# This file was autogenerated. DO NOT EDIT!'
echo '{'
echo " version = \"$version\";"
echo " url = \"$url\";"
echo " hash = \"$hash\";"
echo '}'
} >"$FILE"
}
doAll() {
nix flake update
updateDocker
updateFFZ
updateFirefoxAddons
updateVuetorrent
nix-fast-build
}
doAllWithoutDocker() {
updateFFZ
updateFirefoxAddons
updateVuetorrent
}
[[ "$1" == "-a" || "$1" == "--all" ]] && doAll
[[ "$1" == "-ad" || "$1" == "--all-no-docker" ]] && doAllWithoutDocker
[[ "$1" == "-d" || "$1" == "--docker" ]] && updateDocker
[[ "$1" == "-f" || "$1" == "--firefox" ]] && updateFirefoxAddons
[[ "$1" == "-ffz" || "$1" == "--frankerfacez" ]] && updateFFZ
[[ "$1" == "-v" || "$1" == "--vuetorrent" ]] && updateVuetorrent
alejandra -q "$FLAKE"