Merge pull request #325352 from matteo-pacini/miru-update-script

miru: added passthru.updateScript

authored by tomberek and committed by GitHub 6d4f2475 22f95f61

+86 -5
+7 -1
pkgs/by-name/mi/miru/darwin.nix
··· 7 7 pname, 8 8 version, 9 9 meta, 10 + passthru, 10 11 }: 11 12 stdenvNoCC.mkDerivation rec { 12 - inherit pname version meta; 13 + inherit 14 + pname 15 + version 16 + meta 17 + passthru 18 + ; 13 19 14 20 src = fetchurl { 15 21 url = "https://github.com/ThaUnknown/miru/releases/download/v${version}/mac-Miru-${version}-mac.zip";
+8 -2
pkgs/by-name/mi/miru/linux.nix
··· 5 5 pname, 6 6 version, 7 7 meta, 8 + passthru, 8 9 }: 9 10 10 11 appimageTools.wrapType2 rec { 11 - inherit pname version meta; 12 + inherit 13 + pname 14 + version 15 + meta 16 + passthru 17 + ; 12 18 13 19 src = fetchurl { 14 20 url = "https://github.com/ThaUnknown/miru/releases/download/v${version}/linux-Miru-${version}.AppImage"; 15 21 name = "${pname}-${version}.AppImage"; 16 - sha256 = "sha256-wnqCKnZKt0Fj8TasdRVzI558W7aIB5FLkcDEiZfz3ZQ="; 22 + hash = "sha256-wnqCKnZKt0Fj8TasdRVzI558W7aIB5FLkcDEiZfz3ZQ="; 17 23 }; 18 24 19 25 extraInstallCommands =
+19 -2
pkgs/by-name/mi/miru/package.nix
··· 32 32 instead of flat out closing MPV. 33 33 ''; 34 34 }; 35 + passthru = { 36 + updateScript = ./update.sh; 37 + }; 35 38 in 36 39 if stdenv.isDarwin then 37 - callPackage ./darwin.nix { inherit pname version meta; } 40 + callPackage ./darwin.nix { 41 + inherit 42 + pname 43 + version 44 + meta 45 + passthru 46 + ; 47 + } 38 48 else 39 - callPackage ./linux.nix { inherit pname version meta; } 49 + callPackage ./linux.nix { 50 + inherit 51 + pname 52 + version 53 + meta 54 + passthru 55 + ; 56 + }
+52
pkgs/by-name/mi/miru/update.sh
··· 1 + #!/usr/bin/env nix-shell 2 + #!nix-shell -i bash -p curl jq gnused 3 + 4 + set -euo pipefail 5 + 6 + ROOT="$(dirname "$(readlink -f "$0")")" 7 + if [[ ! "$(basename $ROOT)" == "miru" || ! -f "$ROOT/package.nix" ]]; then 8 + echo "error: Not in the miru folder" >&2 9 + exit 1 10 + fi 11 + 12 + PACKAGE_NIX="$ROOT/package.nix" 13 + LINUX_NIX="$ROOT/linux.nix" 14 + DARWIN_NIX="$ROOT/darwin.nix" 15 + 16 + MIRU_LATEST_VER="$(curl -s ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} "https://api.github.com/repos/ThaUnknown/miru/releases/latest" | jq -r .tag_name | sed 's/^v//')" 17 + MIRU_CURRENT_VER="$(grep -oP 'version = "\K[^"]+' "$PACKAGE_NIX")" 18 + 19 + if [[ "$MIRU_LATEST_VER" == "null" ]]; then 20 + echo "error: could not fetch miru latest version from GitHub API" >&2 21 + exit 1 22 + fi 23 + 24 + if [[ "$MIRU_LATEST_VER" == "$MIRU_CURRENT_VER" ]]; then 25 + echo "miru is up-to-date" 26 + exit 0 27 + fi 28 + 29 + get_hash() { 30 + # $1: URL 31 + nix-hash --to-sri --type sha256 "$(nix-prefetch-url --type sha256 "$1")" 32 + } 33 + 34 + replace_hash_in_file() { 35 + # $1: file 36 + # $2: new hash 37 + sed -i "s#hash = \".*\"#hash = \"$2\"#g" "$1" 38 + } 39 + 40 + replace_version_in_file() { 41 + # $1: file 42 + # $2: new version 43 + sed -i "s#version = \".*\";#version = \"$2\";#g" "$1" 44 + } 45 + 46 + MIRU_LINUX_HASH="$(get_hash "https://github.com/ThaUnknown/miru/releases/download/v${MIRU_LATEST_VER}/linux-Miru-${MIRU_LATEST_VER}.AppImage")" 47 + MIRU_DARWIN_HASH="$(get_hash "https://github.com/ThaUnknown/miru/releases/download/v${MIRU_LATEST_VER}/mac-Miru-${MIRU_LATEST_VER}-mac.zip")" 48 + 49 + replace_hash_in_file "$LINUX_NIX" "$MIRU_LINUX_HASH" 50 + replace_hash_in_file "$DARWIN_NIX" "$MIRU_DARWIN_HASH" 51 + 52 + replace_version_in_file "$PACKAGE_NIX" "$MIRU_LATEST_VER"