about summary refs log tree commit diff
path: root/pkgs/test/nixpkgs-check-by-name/scripts/update-pinned-tool.sh
blob: 3e44cf35b0d272e51888c8622b9cc84b6c572db3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p jq

set -o pipefail -o errexit -o nounset

trace() { echo >&2 "$@"; }

SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

channel=nixos-unstable
pin_file=$SCRIPT_DIR/pinned-tool.json

trace -n "Fetching latest version of channel $channel.. "
# This is probably the easiest way to get Nix to output the path to a downloaded channel!
nixpkgs=$(nix-instantiate --find-file nixpkgs -I nixpkgs=channel:"$channel")
trace "$nixpkgs"

# This file only exists in channels
rev=$(<"$nixpkgs/.git-revision")
trace -e "Git revision of channel $channel is \e[34m$rev\e[0m"


trace -n "Fetching the prebuilt version of nixpkgs-check-by-name.. "
path=$(nix-build --no-out-link "$nixpkgs" -A tests.nixpkgs-check-by-name -j 0 | tee /dev/stderr)

trace "Updating $pin_file"
jq -n \
    --arg rev "$rev" \
    --arg path "$path" \
    '$ARGS.named' \
    > "$pin_file"