about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCamille M. (genesis) <camillemondon@free.fr>2024-06-18 23:57:03 +0200
committerCamille M. (genesis) <camillemondon@free.fr>2024-06-18 23:57:03 +0200
commitc01bd02dd401a91d0d858d14bbe3f876e1ce7a6d (patch)
tree342d0b50e908f0a32d49bc8ba1a3720351c94c54
parentc339c066b893e5683830ba870b1ccd3bbea88ece (diff)
jellyseerr: fix update script
-rw-r--r--pkgs/servers/jellyseerr/default.nix43
-rw-r--r--pkgs/servers/jellyseerr/pin.json5
-rwxr-xr-xpkgs/servers/jellyseerr/update.sh45
3 files changed, 35 insertions, 58 deletions
diff --git a/pkgs/servers/jellyseerr/default.nix b/pkgs/servers/jellyseerr/default.nix
index ca8e93753e69f..b469e46cf10d8 100644
--- a/pkgs/servers/jellyseerr/default.nix
+++ b/pkgs/servers/jellyseerr/default.nix
@@ -1,36 +1,32 @@
-{ lib
-, fetchFromGitHub
-, makeWrapper
-, mkYarnPackage
-, nodejs
-, fetchYarnDeps
-, python3
+{
+  lib,
+  mkYarnPackage,
+  fetchFromGitHub,
+  fetchYarnDeps,
+  makeWrapper,
+  nodejs,
+  python3,
+  sqlite,
 }:
 
-let
-  pin = lib.importJSON ./pin.json;
-in
-
 mkYarnPackage rec {
   pname = "jellyseerr";
-  inherit (pin) version;
+  version = "1.8.1";
 
   src = fetchFromGitHub {
     owner = "Fallenbagel";
     repo = "jellyseerr";
     rev = "v${version}";
-    hash = pin.srcHash;
+    hash = "sha256-B8Hnpi4XwK0WrHRgj7OSVUh49oRH9SVEHdzGbnDa8p8=";
   };
 
   packageJSON = ./package.json;
 
   offlineCache = fetchYarnDeps {
     yarnLock = "${src}/yarn.lock";
-    sha256 = pin.yarnSha256;
+    hash = "sha256-ME19kHlVw0Q5oCytYQCUj4Ek0+712NkqB6eozOtF6/k=";
   };
 
-  doDist = false;
-
   nativeBuildInputs = [
     nodejs
     makeWrapper
@@ -38,16 +34,23 @@ mkYarnPackage rec {
 
   # Fixes "SQLite package has not been found installed" at launch
   pkgConfig.sqlite3 = {
-    nativeBuildInputs = [ nodejs.pkgs.node-pre-gyp python3 ];
+    nativeBuildInputs = [
+      nodejs.pkgs.node-pre-gyp
+      python3
+      sqlite
+    ];
     postInstall = ''
       export CPPFLAGS="-I${nodejs}/include/node"
-      node-pre-gyp install --prefer-offline --build-from-source --nodedir=${nodejs}/include/node
+      node-pre-gyp install --prefer-offline --build-from-source --nodedir=${nodejs}/include/node --sqlite=${sqlite.dev}
       rm -r build-tmp-napi-v6
     '';
   };
 
   pkgConfig.bcrypt = {
-    nativeBuildInputs = [ nodejs.pkgs.node-pre-gyp python3 ];
+    nativeBuildInputs = [
+      nodejs.pkgs.node-pre-gyp
+      python3
+    ];
     postInstall = ''
       export CPPFLAGS="-I${nodejs}/include/node"
       node-pre-gyp install --prefer-offline --build-from-source --nodedir=${nodejs}/include/node
@@ -72,6 +75,8 @@ mkYarnPackage rec {
       --set NODE_ENV production
   '';
 
+  doDist = false;
+
   passthru.updateScript = ./update.sh;
 
   meta = with lib; {
diff --git a/pkgs/servers/jellyseerr/pin.json b/pkgs/servers/jellyseerr/pin.json
deleted file mode 100644
index 715f91a73b31c..0000000000000
--- a/pkgs/servers/jellyseerr/pin.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "version": "1.8.1",
-  "srcHash": "sha256-B8Hnpi4XwK0WrHRgj7OSVUh49oRH9SVEHdzGbnDa8p8=",
-  "yarnSha256": "ME19kHlVw0Q5oCytYQCUj4Ek0+712NkqB6eozOtF6/k="
-}
diff --git a/pkgs/servers/jellyseerr/update.sh b/pkgs/servers/jellyseerr/update.sh
index 719fc622a6e4c..cd8f6c03081c7 100755
--- a/pkgs/servers/jellyseerr/update.sh
+++ b/pkgs/servers/jellyseerr/update.sh
@@ -1,39 +1,16 @@
 #!/usr/bin/env nix-shell
-#!nix-shell -i bash -p nix curl jq prefetch-yarn-deps nix-prefetch-github
+#!nix-shell -i bash -p curl jq common-updater-scripts nix prefetch-yarn-deps
 
-set -euo pipefail
+set -eu -o pipefail
 
-if [[ "$#" -gt 1 || "$1" == -* ]]; then
-  echo "Regenerates packaging data for jellyseerr."
-  echo "Usage: $0 [git release tag]"
-  exit 1
-fi
+version=${1:-$(curl -s https://api.github.com/repos/Fallenbagel/jellyseerr/releases/latest | jq --raw-output '.tag_name[1:]')}
+update-source-version jellyseerr $version
 
-tag="$1"
+nix_file=$(nix-instantiate --eval --strict -A "jellyseerr.meta.position" | sed -re 's/^"(.*):[0-9]+"$/\1/')
+nix_dir=$(dirname $nix_file)
+cp $(nix-instantiate --eval --expr 'with import ./default.nix { }; "${jellyseerr.src}/package.json"' | sed 's/"//g') $nix_dir
 
-if [ -z "$tag" ]; then
-  tag="$(
-    curl "https://api.github.com/repos/Fallenbagel/jellyseerr/releases?per_page=1" |
-    jq -r '.[0].tag_name'
-  )"
-fi
-
-src="https://raw.githubusercontent.com/Fallenbagel/jellyseerr/$tag"
-src_hash=$(nix-prefetch-github Fallenbagel jellyseerr --rev ${tag} | jq -r .sha256)
-
-tmpdir=$(mktemp -d)
-trap 'rm -rf "$tmpdir"' EXIT
-
-pushd $tmpdir
-curl -O "$src/yarn.lock"
-yarn_sha256=$(prefetch-yarn-deps yarn.lock)
-popd
-
-curl -O "$src/package.json"
-cat > pin.json << EOF
-{
-  "version": "$(echo $tag | grep -P '(\d|\.)+' -o)",
-  "srcHash": "sha256-$src_hash",
-  "yarnSha256": "$yarn_sha256"
-}
-EOF
+old_yarn_hash=$(nix-instantiate --eval --strict -A "jellyseerr.offlineCache.outputHash" | tr -d '"' | sed -re 's|[+]|\\&|g')
+lock_file=$(nix-instantiate --eval --expr 'with import ./default.nix { }; "${jellyseerr.src}/yarn.lock"' | sed 's/"//g')
+new_yarn_hash=$(nix hash to-sri --type sha256 $(prefetch-yarn-deps $lock_file))
+sed -i "$nix_file" -re "s|\"$old_yarn_hash\"|\"$new_yarn_hash\"|"