From 0486d510153ed6e9281e3f044525524e107a8bfb Mon Sep 17 00:00:00 2001 From: "Adam C. Stephens" Date: Mon, 4 Aug 2025 10:01:44 -0400 Subject: [PATCH 1/2] audiobookshelf: rewrite updateScript to directly modify package.nixx --- pkgs/by-name/au/audiobookshelf/package.nix | 19 ++++++---- pkgs/by-name/au/audiobookshelf/source.json | 9 ----- pkgs/by-name/au/audiobookshelf/update.nu | 30 ---------------- pkgs/by-name/au/audiobookshelf/update.sh | 42 ++++++++++++++++++++++ 4 files changed, 54 insertions(+), 46 deletions(-) delete mode 100644 pkgs/by-name/au/audiobookshelf/source.json delete mode 100755 pkgs/by-name/au/audiobookshelf/update.nu create mode 100755 pkgs/by-name/au/audiobookshelf/update.sh diff --git a/pkgs/by-name/au/audiobookshelf/package.nix b/pkgs/by-name/au/audiobookshelf/package.nix index 2782e421adc5..7ed68a9da184 100644 --- a/pkgs/by-name/au/audiobookshelf/package.nix +++ b/pkgs/by-name/au/audiobookshelf/package.nix @@ -14,8 +14,12 @@ }: let - source = builtins.fromJSON (builtins.readFile ./source.json); - pname = "audiobookshelf"; + source = { + version = "2.26.3"; + hash = "sha256-AnPHwb3ad6TvgQ9DJdOYwQ+RwE5+iMA7tDAPnviQ9YM="; + npmDepsHash = "sha256-+UbOYtS0lumYajQklm0izgW6oNb0QcxvDKYtRSFICj8="; + clientNpmDepsHash = "sha256-5BHutO2aCvVWvN/LySMtgPPl9HQLsu8Tjj/k7FIiAr8="; + }; src = fetchFromGitHub { owner = "advplyr"; @@ -37,7 +41,7 @@ let NODE_OPTIONS = "--openssl-legacy-provider"; npmBuildScript = "generate"; - npmDepsHash = source.clientDepsHash; + npmDepsHash = source.clientNpmDepsHash; }; wrapper = import ./wrapper.nix { @@ -51,15 +55,16 @@ let in buildNpmPackage { - inherit pname src; - inherit (source) version; + pname = "audiobookshelf"; + + inherit src; + inherit (source) npmDepsHash version; buildInputs = [ util-linux ]; nativeBuildInputs = [ python3 ]; dontNpmBuild = true; npmInstallFlags = [ "--only-production" ]; - npmDepsHash = source.depsHash; installPhase = '' mkdir -p $out/opt/client @@ -75,7 +80,7 @@ buildNpmPackage { passthru = { tests.basic = nixosTests.audiobookshelf; - updateScript = ./update.nu; + updateScript = ./update.sh; }; meta = { diff --git a/pkgs/by-name/au/audiobookshelf/source.json b/pkgs/by-name/au/audiobookshelf/source.json deleted file mode 100644 index 84a099c5231d..000000000000 --- a/pkgs/by-name/au/audiobookshelf/source.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "owner": "advplyr", - "repo": "audiobookshelf", - "rev": "a7a3a565098791a8157ed54b46b5258bb97c141d", - "hash": "sha256-AnPHwb3ad6TvgQ9DJdOYwQ+RwE5+iMA7tDAPnviQ9YM=", - "version": "2.26.3", - "depsHash": "sha256-+UbOYtS0lumYajQklm0izgW6oNb0QcxvDKYtRSFICj8=", - "clientDepsHash": "sha256-5BHutO2aCvVWvN/LySMtgPPl9HQLsu8Tjj/k7FIiAr8=" -} diff --git a/pkgs/by-name/au/audiobookshelf/update.nu b/pkgs/by-name/au/audiobookshelf/update.nu deleted file mode 100755 index 4aef2276e4f0..000000000000 --- a/pkgs/by-name/au/audiobookshelf/update.nu +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env nix-shell -#!nix-shell -i nu -p nushell common-updater-scripts prefetch-npm-deps nix-prefetch-github - -def main [] { - let sourceFile = $"(pwd)/pkgs/by-name/au/audiobookshelf/source.json" - let tags = list-git-tags --url=https://github.com/advplyr/audiobookshelf | lines | sort --natural | str replace v '' - - let latest_tag = $tags | last - let current_version = open $sourceFile | get version - - if $latest_tag != $current_version { - let source = nix-prefetch-github advplyr audiobookshelf --rev $"v($latest_tag)" | from json | merge { version: $latest_tag, depsHash: "", clientDepsHash: ""} - $source | save --force $sourceFile - - let srcPath = nix-build $env.PWD -A audiobookshelf.src | complete | get stdout | lines | first - - print $srcPath - ls $srcPath - - $source | merge { - depsHash: (prefetch-npm-deps $"($srcPath)/package-lock.json"), - clientDepsHash: (prefetch-npm-deps $"($srcPath)/client/package-lock.json") - } | save --force $sourceFile - - # appease the editorconfig CI check - echo "\n" | save --append $sourceFile - } - - {before: $current_version, after: $latest_tag} -} diff --git a/pkgs/by-name/au/audiobookshelf/update.sh b/pkgs/by-name/au/audiobookshelf/update.sh new file mode 100755 index 000000000000..f881fed2932c --- /dev/null +++ b/pkgs/by-name/au/audiobookshelf/update.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p curl gnused gawk nix-prefetch common-updater-scripts jq prefetch-npm-deps + +set -euo pipefail + +ROOT="$(dirname "$(readlink -f "$0")")" +NIX_DRV="$ROOT/package.nix" +if [ ! -f "$NIX_DRV" ]; then + echo "ERROR: cannot find package.nix in $ROOT" + exit 1 +fi + +REPO="advplyr/audiobookshelf" + +NEW_VER=$(list-git-tags --url=https://github.com/$REPO | rg 'v[0-9\.]*$' | sed -e 's/^v//' | sort -V | tail -n 1) +OLD_VER=$(nix-instantiate --eval -A audiobookshelf.version | jq --exit-status --raw-output) + +if [ "$NEW_VER" == "$OLD_VER" ]; then + echo "No update needed." + exit 0 +fi + +replace_hash() { + sed -i "s#$1 = \"sha256-.\{44\}\"#$1 = \"$2\"#" "$NIX_DRV" +} + +get_npm_hash() { + pushd "$(mktemp -d)" >/dev/null + curl -s "https://raw.githubusercontent.com/$REPO/v$NEW_VER/$1" -o package-lock.json + prefetch-npm-deps package-lock.json + rm -f package-lock.json + popd >/dev/null +} + +src_hash() { + nix-prefetch-git --url https://github.com/$REPO --rev "refs/tags/v${NEW_VER}" | jq --exit-status --raw-output .hash +} + +sed -i "s/version = \".*\"/version = \"$NEW_VER\"/" "$NIX_DRV" +replace_hash "hash" "$(src_hash)" +replace_hash "npmDepsHash" "$(get_npm_hash "package-lock.json")" +replace_hash "clientNpmDepsHash" "$(get_npm_hash "client/package-lock.json")" From f1580ad90b88ceda3102f04cde4503963bcc4287 Mon Sep 17 00:00:00 2001 From: "Adam C. Stephens" Date: Mon, 4 Aug 2025 14:06:56 +0000 Subject: [PATCH 2/2] audiobookshelf: 2.26.3 -> 2.27.0 https://github.com/advplyr/audiobookshelf/releases/tag/v2.27.0 --- pkgs/by-name/au/audiobookshelf/package.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/au/audiobookshelf/package.nix b/pkgs/by-name/au/audiobookshelf/package.nix index 7ed68a9da184..40f8fc78c837 100644 --- a/pkgs/by-name/au/audiobookshelf/package.nix +++ b/pkgs/by-name/au/audiobookshelf/package.nix @@ -15,10 +15,10 @@ let source = { - version = "2.26.3"; - hash = "sha256-AnPHwb3ad6TvgQ9DJdOYwQ+RwE5+iMA7tDAPnviQ9YM="; - npmDepsHash = "sha256-+UbOYtS0lumYajQklm0izgW6oNb0QcxvDKYtRSFICj8="; - clientNpmDepsHash = "sha256-5BHutO2aCvVWvN/LySMtgPPl9HQLsu8Tjj/k7FIiAr8="; + version = "2.27.0"; + hash = "sha256-FKWK/yYMNBrGgfWtdUC9DpQ2y8mBn3/5G+buQNzzot4="; + npmDepsHash = "sha256-FpRO7lhgQNZ5wHQwHFIxkrYfmivgTopXKFcrQ48B20w="; + clientNpmDepsHash = "sha256-GHN49bo7m9pzvwNvkVtA0cwTv+rWSAKpBHG7jqXm/vo="; }; src = fetchFromGitHub {