Since we're currently on the unstable channel and will likely stay there for a while, let's encode this in the update script. Once we switch back to stable, if we do, we can still adjust it again.
63 lines
1.8 KiB
Nix
63 lines
1.8 KiB
Nix
{ buildToolbox
|
|
, checkedShellScript
|
|
, coreutils
|
|
, curl
|
|
, jq
|
|
, nix
|
|
}:
|
|
# Utility script for pinning the latest stable version of Nixpkgs.
|
|
|
|
# Instead of pinning Nixpkgs based on the huge Git repository, we reference a
|
|
# specific tarball that only contains the source of the revision that we want
|
|
# to pin.
|
|
let
|
|
name =
|
|
"postgrest-nixpkgs-upgrade";
|
|
|
|
refUrl =
|
|
"https://api.github.com/repos/nixos/nixpkgs/git/matching-refs/heads/nixpkgs-";
|
|
|
|
githubV3Header =
|
|
"Accept: application/vnd.github.v3+json";
|
|
|
|
tarballUrlBase =
|
|
"https://github.com/nixos/nixpkgs/archive/";
|
|
|
|
upgrade =
|
|
checkedShellScript
|
|
{
|
|
inherit name;
|
|
docs = "Pin the newest stable version of Nixpkgs.";
|
|
workingDir = "/";
|
|
}
|
|
''
|
|
# The list of refs is sorted. The first result will be nixpkgs-unstable, the second the latest stable branch.
|
|
# shellcheck disable=SC2207
|
|
commit=($(${curl}/bin/curl "${refUrl}" -H "${githubV3Header}" | ${jq}/bin/jq -r 'sort_by(.ref) | reverse | [.[0].object.sha, .[0].ref] | @tsv'))
|
|
tarballUrl="${tarballUrlBase}''${commit[0]}.tar.gz"
|
|
tarballHash="$(${nix}/bin/nix-prefetch-url --unpack "$tarballUrl")"
|
|
currentDate="$(${coreutils}/bin/date --iso)"
|
|
|
|
cat > nix/nixpkgs-version.nix << EOF
|
|
# Pinned version of Nixpkgs, generated with ${name}.
|
|
{
|
|
owner = "NixOS";
|
|
repo = "nixpkgs";
|
|
ref = "''${commit[1]}";
|
|
date = "$currentDate";
|
|
rev = "''${commit[0]}";
|
|
tarballHash = "$tarballHash";
|
|
}
|
|
EOF
|
|
|
|
echo "# This file is auto-generated by ${name}" > docs/requirements.txt
|
|
cat "$(nix-build -A docs.requirements)" >> docs/requirements.txt
|
|
'';
|
|
|
|
in
|
|
buildToolbox
|
|
{
|
|
name = "postgrest-nixpkgs";
|
|
tools = { inherit upgrade; };
|
|
}
|