-
Notifications
You must be signed in to change notification settings - Fork 35
/
Copy pathdefault.nix
29 lines (27 loc) · 970 Bytes
/
default.nix
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
{ callPackage
, lib
}:
let
inherit (builtins) listToAttrs sort filter;
inherit (lib) nameValuePair last recurseIntoAttrs flatten mapAttrsToList versionOlder importJSON;
inherit (lib.our) escapeVersion;
versions = importJSON ./lock.json;
# Sort by attribute 'attr' using 'f' function
sortBy = attr: f: sort (a: b: f a.${attr} b.${attr});
packages =
mapAttrsToList
(version: builds:
sortBy "version" versionOlder (mapAttrsToList
(buildNumber: value:
callPackage ./derivation.nix {
inherit (value) url sha256 channel;
version = "${version}-build.${buildNumber}";
})
builds))
versions;
stablePackages = filter (x: x != [ ]) (map (filter (x: x.meta.branch != "experimental")) packages);
in
recurseIntoAttrs (listToAttrs (
(map (x: nameValuePair (escapeVersion x.name) x) (flatten packages))
++ [ (nameValuePair "velocity" (last (last stablePackages))) ]
))