This repository has no description
1{
2 fetch,
3 run,
4 lib,
5 config,
6
7 clang-host ? clang,
8 clang,
9 gnumake,
10 lld,
11 llvm,
12 linux,
13 sysroot,
14}:
15
16run
17 {
18 name = "busybox";
19 src = fetch.github {
20 owner = "tombl";
21 repo = "busybox";
22 rev = "refs/heads/master";
23 hash = "sha256-0dq8WFVXUO8xkpxWTVgZywz2imxy9eq/a9m1ALIRpHM=";
24 };
25 path = [
26 clang
27 gnumake
28 lld
29 llvm
30 ];
31 }
32 ''
33 make() {
34 command make -j$NIX_BUILD_CORES \
35 ARCH=wasm32 \
36 HOSTCC=${clang-host}/bin/clang \
37 CC=${clang}/bin/clang \
38 CFLAGS_busybox="-Wl,--import-memory -Wl,--max-memory=4294967296 -Wl,--shared-memory -Wl,--export-table" "$@"
39 }
40
41 config() {
42 sed -i "/CONFIG_$1=/d" .config
43 sed -i "/CONFIG_$1 is not set/d" .config
44 case $2 in
45 y|n) echo "CONFIG_$1=$2" >> .config ;;
46 *) echo "CONFIG_$1=\"$2\"" >> .config ;;
47 esac
48 }
49
50 if ! [ -f .config ]; then
51 make defconfig
52 config STATIC y
53 config NOMMU y
54 config STATIC_LIBGCC n
55 config CROSS_COMPILER_PREFIX llvm-
56 config SYSROOT ${sysroot}
57 config EXTRA_CFLAGS '-I${linux.headers}/include ${lib.optionalString config.debug "-g"} -matomics -mbulk-memory'
58 config EXTRA_LDLIBS c
59
60 config BOOTCHARTD n
61 config CONSPY n
62 config CROND n
63 config CRONTAB n
64 config DEVMEM n
65 config FBSPLASH n
66 config FTPD n
67 config HDPARM n
68 config HEXEDIT n
69 config HTTPD n
70 config IFDOWN n
71 config IFUP n
72 config INETD n
73 config NC n
74 config NSENTER n
75 config SCRIPT n
76 config START_STOP_DAEMON n
77 config SWAPOFF n
78 config SWAPON n
79 config TCPSVD n
80 config TELNETD n
81 config TIME n
82 config TS n
83 config UDPSVD n
84 config WGET n
85
86 config SENDMAIL n
87 config REFORMIME n
88 config MAKEMIME n
89 config POPMAILDIR n
90
91 config INIT n
92 config LINUXRC n
93
94 config RUNSV n
95 config RUNSVDIR n
96 config SVLOGD n
97
98 config HUSH_TICK n
99
100 config HWCLOCK n
101 config RTCWAKE n
102
103 make oldconfig
104 fi
105
106 make ${lib.optionalString config.debug "SKIP_STRIP=y"}
107
108 mkdir -p $out/bin
109 cp busybox $out/bin
110 ''