about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDan Buch <dan@meatballhat.com>2023-09-07 21:46:19 +0000
committerDan Buch <dan@meatballhat.com>2023-09-27 00:17:14 +0000
commit3ffce56f46a454bf912a6b7043063f734eef8c21 (patch)
treeaad9a2001377c6a7ce4dfda6530f4bd9b77f8406
parent647a8a5b57c49253a56af4a282e98f0c8efaa20d (diff)
mastodon: generate and read yarn hash from dependencies dir
Co-authored-by: Robert Schütz <github@dotlambda.de>
-rw-r--r--pkgs/servers/mastodon/default.nix5
-rwxr-xr-xpkgs/servers/mastodon/update.sh10
-rw-r--r--pkgs/servers/mastodon/yarn-hash.nix1
3 files changed, 12 insertions, 4 deletions
diff --git a/pkgs/servers/mastodon/default.nix b/pkgs/servers/mastodon/default.nix
index 1547485a03782..d75e148bf1e36 100644
--- a/pkgs/servers/mastodon/default.nix
+++ b/pkgs/servers/mastodon/default.nix
@@ -7,7 +7,8 @@
 , pname ? "mastodon"
 , version ? import ./version.nix
 , srcOverride ? null
-, dependenciesDir ? ./.  # Should contain gemset.nix, yarn.nix and package.json.
+, dependenciesDir ? ./.  # Expected to contain gemset.nix
+, yarnHash ? import ./yarn-hash.nix
 }:
 
 stdenv.mkDerivation rec {
@@ -43,7 +44,7 @@ stdenv.mkDerivation rec {
 
     yarnOfflineCache = fetchYarnDeps {
       yarnLock = "${src}/yarn.lock";
-      sha256 = "sha256-e3rl/WuKXaUdeDEYvo1sSubuIwtBjkbguCYdAijwXOA=";
+      hash = yarnHash;
     };
 
     nativeBuildInputs = [ fixup_yarn_lock nodejs-slim yarn mastodonGems mastodonGems.wrappedRuby brotli ];
diff --git a/pkgs/servers/mastodon/update.sh b/pkgs/servers/mastodon/update.sh
index babc062048510..eafcdd958617c 100755
--- a/pkgs/servers/mastodon/update.sh
+++ b/pkgs/servers/mastodon/update.sh
@@ -1,5 +1,5 @@
 #!/usr/bin/env nix-shell
-#! nix-shell -i bash -p yarn2nix bundix coreutils diffutils nix-prefetch-github gnused jq
+#! nix-shell -i bash -p bundix coreutils diffutils nix-prefetch-github gnused jq prefetch-yarn-deps
 set -e
 
 OWNER=mastodon
@@ -77,7 +77,8 @@ trap cleanup EXIT
 
 echo "Fetching source code $REVISION"
 JSON=$(nix-prefetch-github "$OWNER" "$REPO" --rev "$REVISION" 2> $WORK_DIR/nix-prefetch-git.out)
-HASH=$(echo "$JSON" | jq -r .hash)
+HASH="$(echo "$JSON" | jq -r .sha256)"
+HASH="$(nix hash to-sri --type sha256 "$HASH")"
 
 echo "Creating version.nix"
 echo "\"$VERSION\"" | sed 's/^"v/"/' > version.nix
@@ -101,3 +102,8 @@ SOURCE_DIR="$(nix-build --no-out-link -E '(import <nixpkgs> {}).callPackage ./so
 echo "Creating gemset.nix"
 bundix --lockfile="$SOURCE_DIR/Gemfile.lock" --gemfile="$SOURCE_DIR/Gemfile"
 echo "" >> gemset.nix  # Create trailing newline to please EditorConfig checks
+
+echo "Creating yarn-hash.nix"
+YARN_HASH="$(prefetch-yarn-deps "$SOURCE_DIR/yarn.lock")"
+YARN_HASH="$(nix hash to-sri --type sha256 "$YARN_HASH")"
+printf '"%s"\n' "$YARN_HASH" > yarn-hash.nix
diff --git a/pkgs/servers/mastodon/yarn-hash.nix b/pkgs/servers/mastodon/yarn-hash.nix
new file mode 100644
index 0000000000000..f0e3e8a27af76
--- /dev/null
+++ b/pkgs/servers/mastodon/yarn-hash.nix
@@ -0,0 +1 @@
+"sha256-e3rl/WuKXaUdeDEYvo1sSubuIwtBjkbguCYdAijwXOA="