#!/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/pkgs/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/pkgs/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"