55 lines
1.5 KiB
Bash
55 lines
1.5 KiB
Bash
|
#!/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 <nixpkgs> {}).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
|