about summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xbin/__dispatch.sh3
l---------bin/depot-nixpkgs-update1
-rw-r--r--tools/depot-nixpkgs-update.nix44
3 files changed, 48 insertions, 0 deletions
diff --git a/bin/__dispatch.sh b/bin/__dispatch.sh
index a4fa75358d..535c9b48ab 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 0000000000..8390ec9c96
--- /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 0000000000..2475ca2e23
--- /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}
+''