#!/usr/bin/env nix-shell #! nix-shell -i bash -p bundix yarn2nix yarn nix-prefetch-git set -e URL=https://github.com/glitch-soc/mastodon.git REVISION=$(jq -r '.nodes.mastodon.locked.rev' ../flake.lock) rm -f gemset.nix yarn.nix TARGET_DIR="$PWD" WORK_DIR=$(mktemp -d) # Check that working directory was created. if [[ ! "$WORK_DIR" || ! -d "$WORK_DIR" ]]; then echo "Could not create temporary directory" exit 1 fi # Delete the working directory on exit. function cleanup { # Report errors, if any, from nix-prefetch-git grep "fatal" $WORK_DIR/nix-prefetch-git.out >/dev/stderr || true rm -rf "$WORK_DIR" } trap cleanup EXIT echo "Fetching source code $REVISION from $URL" JSON=$(nix-prefetch-git --url "$URL" --rev "$REVISION" 2> $WORK_DIR/nix-prefetch-git.out) SHA=$(echo $JSON | jq -r .sha256) FETCHED_SOURCE_DIR=$(grep '^path is' $WORK_DIR/nix-prefetch-git.out | sed 's/^path is //') cat > source.nix << EOF # This file was generated by pkgs.mastodon.updateScript. { fetchgit, applyPatches }: let src = fetchgit { url = "$URL"; rev = "$REVISION"; sha256 = "$SHA"; }; in applyPatches { inherit src; patches = [$PATCHES]; } EOF SOURCE_DIR="$(nix-build --no-out-link -E '(import {}).callPackage ./source.nix {}')" rm source.nix echo "Creating gemset.nix" bundix --lockfile="$SOURCE_DIR/Gemfile.lock" --gemfile="$SOURCE_DIR/Gemfile" echo "" >> $TARGET_DIR/gemset.nix # Create trailing newline to please EditorConfig checks echo "Creating yarn.nix" yarn2nix --lockfile="$SOURCE_DIR/yarn.lock" > $TARGET_DIR/yarn.nix