about summary refs log tree commit diff
path: root/tools/depot-nixpkgs-update.nix
blob: c92bc76b62ea311b5dffdbef564018396511c7a6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
{ pkgs, depot, ... }:

let
  inherit (depot.nix)
    getBins
    ;

  stableRelease = "21.11";

  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}
''