Distro for Linux for WebAssembly
1{
2 run,
3 lib,
4}:
5
6rec {
7 file =
8 {
9 url,
10 name ? builtins.baseNameOf url,
11 hash ? lib.fakeHash,
12 }:
13 import <nix/fetchurl.nix> {
14 inherit url name hash;
15 };
16 tar =
17 args:
18 let
19 result = file args;
20 in
21 run { inherit (result) name; } ''
22 mkdir $out
23 case "${result.url}" in
24 *gz) decompress=-z ;;
25 *bz2) decompress=-j ;;
26 *xz) decompress=-J ;;
27 *lz) decompress=--lzma ;;
28 *) decompress= ;;
29 esac
30 tar -x $decompress -f ${result} -C $out --strip-components=1
31 '';
32 zip =
33 args:
34 let
35 result = file args;
36 in
37 run { inherit (result) name; } ''
38 mkdir $out
39 unzip -f ${result} -d $out
40 '';
41 github =
42 {
43 owner,
44 repo,
45 rev,
46 ...
47 }@args:
48 tar (
49 {
50 url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz";
51 name = "${owner}-${repo}-${builtins.baseNameOf rev}";
52 }
53 // removeAttrs args [
54 "url"
55 "owner"
56 "repo"
57 "rev"
58 ]
59 );
60}