From 5a3a495956cb92f7f992c4efd80f7d00b216f0a1 Mon Sep 17 00:00:00 2001 From: sterni Date: Fri, 16 Jul 2021 21:07:31 +0200 Subject: [PATCH] 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 --- bin/__dispatch.sh | 3 +++ bin/depot-nixpkgs-update | 1 + tools/depot-nixpkgs-update.nix | 44 ++++++++++++++++++++++++++++++++++ 3 files changed, 48 insertions(+) create mode 120000 bin/depot-nixpkgs-update create mode 100644 tools/depot-nixpkgs-update.nix diff --git a/bin/__dispatch.sh b/bin/__dispatch.sh index a4fa75358..535c9b48a 100755 --- a/bin/__dispatch.sh +++ b/bin/__dispatch.sh @@ -19,6 +19,9 @@ case "${TARGET_TOOL}" in depot-build) attr="tools.depot-build" ;; + depot-nixpkgs-update) + attr="tools.depot-nixpkgs-update" + ;; gerrit) attr="tools.gerrit-cli" ;; diff --git a/bin/depot-nixpkgs-update b/bin/depot-nixpkgs-update new file mode 120000 index 000000000..8390ec9c9 --- /dev/null +++ b/bin/depot-nixpkgs-update @@ -0,0 +1 @@ +__dispatch.sh \ No newline at end of file diff --git a/tools/depot-nixpkgs-update.nix b/tools/depot-nixpkgs-update.nix new file mode 100644 index 000000000..2475ca2e2 --- /dev/null +++ b/tools/depot-nixpkgs-update.nix @@ -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} +''