diff options
author | sterni <sternenseemann@systemli.org> | 2021-07-16T19·07+0200 |
---|---|---|
committer | sterni <sternenseemann@systemli.org> | 2021-07-28T12·14+0000 |
commit | 5a3a495956cb92f7f992c4efd80f7d00b216f0a1 (patch) | |
tree | e29927601adce19dee3fd054589ce499029c1148 /tools | |
parent | 6b88df04c1986bf5c40433caa87f1dba8ce8971d (diff) |
feat(tools/depot-nixpkgs-update): tool to update our pin r/2697
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>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/depot-nixpkgs-update.nix | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tools/depot-nixpkgs-update.nix b/tools/depot-nixpkgs-update.nix new file mode 100644 index 000000000000..2475ca2e2330 --- /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} +'' |