mirror of
https://gitlab.computer.surgery/matrix/grapevine.git
synced 2025-12-16 07:11:24 +01:00
It doesn't actually do anything unless more configuration is added, but it's not really necessary for this use case so removing it is easier.
70 lines
1.7 KiB
Bash
Executable file
70 lines
1.7 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
# Build and cache the specified arguments
|
|
just() {
|
|
if command -v nom &> /dev/null; then
|
|
nom build "$@"
|
|
else
|
|
nix build "$@"
|
|
fi
|
|
|
|
# Find all output paths of the installables and their build dependencies
|
|
readarray -t derivations < <(nix path-info --derivation "$@")
|
|
readarray -t upload_paths < <(
|
|
xargs \
|
|
nix-store --query --requisites --include-outputs \
|
|
<<< "${derivations[*]}"
|
|
)
|
|
|
|
echo "Found ${#upload_paths[@]} paths to upload"
|
|
|
|
if [ -z ${ATTIC_TOKEN+x} ]; then
|
|
echo "\$ATTIC_TOKEN is unset, skipping uploading to the binary cache"
|
|
return
|
|
fi
|
|
|
|
nix run --inputs-from . attic#default -- \
|
|
login "$ATTIC_SERVER" "$ATTIC_ENDPOINT" "$ATTIC_TOKEN"
|
|
|
|
# Upload them to Attic. It seems to insist on newlines to separate the
|
|
# paths.
|
|
(
|
|
IFS=$'\n'
|
|
nix run --inputs-from . attic#default -- \
|
|
push --stdin --no-closure "$ATTIC_SERVER:$ATTIC_CACHE" \
|
|
<<< "${upload_paths[*]}"
|
|
)
|
|
}
|
|
|
|
# Build and cache things needed for CI
|
|
ci() {
|
|
installables=(
|
|
--inputs-from .
|
|
|
|
# Keep sorted
|
|
".#devShells.x86_64-linux.default"
|
|
attic#default
|
|
nixpkgs#direnv
|
|
nixpkgs#jq
|
|
)
|
|
|
|
just "${installables[@]}"
|
|
}
|
|
|
|
# Build and cache all the package outputs
|
|
packages() {
|
|
readarray -t installables < <(
|
|
nix flake show --json 2> /dev/null |
|
|
nix run --inputs-from . nixpkgs#jq -- \
|
|
-r \
|
|
'.packages."x86_64-linux" | keys | map(".#" + .) | .[]'
|
|
)
|
|
|
|
just "${installables[@]}"
|
|
}
|
|
|
|
pushd "$(git rev-parse --show-toplevel)" > /dev/null
|
|
"$@"
|
|
popd > /dev/null
|