feat(tools/depot-nixpkgs-update): tool to update our pin
Very simplistic tool to aid with updating our nixpkgs channel pins: This tool prints the correct two `*Hashes` sets to stdout, so you can easily delete the appropriate lines in `third_party/nixpkgs/default.nix`, run ./bin/depot-nixpkgs-update | wl-copy and paste it into your editor. Doing this fully automatically would be possible, but would either a) require changing `default.nix`, so it is regex-able more easily, b) touching something like rnix-parser which I have no motivation to at the moment or c) searching for the old hashes and replacing them with the new ones. This may be a simple and worthwhile improvement in the future. Change-Id: I4df44e3827ce9ff6e4fe2d336c08016d799e21a7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3252 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
This commit is contained in:
parent
6b88df04c1
commit
5a3a495956
3 changed files with 48 additions and 0 deletions
|
@ -19,6 +19,9 @@ case "${TARGET_TOOL}" in
|
||||||
depot-build)
|
depot-build)
|
||||||
attr="tools.depot-build"
|
attr="tools.depot-build"
|
||||||
;;
|
;;
|
||||||
|
depot-nixpkgs-update)
|
||||||
|
attr="tools.depot-nixpkgs-update"
|
||||||
|
;;
|
||||||
gerrit)
|
gerrit)
|
||||||
attr="tools.gerrit-cli"
|
attr="tools.gerrit-cli"
|
||||||
;;
|
;;
|
||||||
|
|
1
bin/depot-nixpkgs-update
Symbolic link
1
bin/depot-nixpkgs-update
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
__dispatch.sh
|
44
tools/depot-nixpkgs-update.nix
Normal file
44
tools/depot-nixpkgs-update.nix
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
{ pkgs, depot, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (depot.nix)
|
||||||
|
getBins
|
||||||
|
;
|
||||||
|
|
||||||
|
stableRelease = "21.05";
|
||||||
|
|
||||||
|
channelsUrl = "https://channels.nixos.org";
|
||||||
|
archiveUrl = "https://github.com/NixOS/nixpkgs/archive/";
|
||||||
|
|
||||||
|
bins = getBins pkgs.nix [ "nix-prefetch-url" ]
|
||||||
|
// getBins pkgs.curl [ "curl" ]
|
||||||
|
;
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
pkgs.writers.writeDashBin "depot-nixpkgs-update" ''
|
||||||
|
set -e
|
||||||
|
|
||||||
|
printSet() {
|
||||||
|
setname="$1"
|
||||||
|
shift
|
||||||
|
channel="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
commit="$(${bins.curl} -L "${channelsUrl}/$channel/git-revision")"
|
||||||
|
date="$(curl -i -L "${channelsUrl}/$channel/git-revision" \
|
||||||
|
| grep ^last-modified \
|
||||||
|
| sed 's/^last-modified: \(.\+\)\r/\1/')"
|
||||||
|
hash="$(${bins.nix-prefetch-url} --unpack --type sha256 "${archiveUrl}/$commit.tar.gz")"
|
||||||
|
|
||||||
|
printf '%s\n' "
|
||||||
|
# Tracking $channel as of $(date --rfc-3339=date --date="$date").
|
||||||
|
$setname = {
|
||||||
|
commit = \"$commit\";
|
||||||
|
sha256 = \"$hash\";
|
||||||
|
};"
|
||||||
|
}
|
||||||
|
|
||||||
|
printSet unstableHashes nixos-unstable
|
||||||
|
printSet stableHashes nixos-${stableRelease}
|
||||||
|
''
|
Loading…
Reference in a new issue