blob: ee4e25035d8a5d4dc76f7c95279c68e4d05097a0 (
plain)
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
45
46
|
{
bootler,
stdenv,
nasm,
qemu,
...
}:
stdenv.mkDerivation {
pname = "twasm";
version = "0.1.0";
src = ./.;
buildPhase = ''
${nasm}/bin/nasm \
asm/main.asm \
-o out.bin \
-w+all \
-w-reloc-abs
'';
installPhase = ''
dd if=/dev/zero of=disk bs=512 count=2880
dd if=${bootler}/bin/boot.bin of=disk conv=notrunc
dd if=out.bin of=disk bs=512 seek=1 conv=notrunc
mkdir -p $out/bin
cat<<EOF>$out/bin/twasm
#!/usr/bin/env bash
mkdir -p ./.bootle
cp $(echo $out)/bin/disk ./.bootle/disk
chmod a+w ./.bootle/disk
${qemu}/bin/qemu-system-x86_64 \
-nographic \
-s \
-drive file=./.bootle/disk,format=raw,index=0,media=disk
rm ./.bootle -r
EOF
chmod +x $out/bin/twasm
cp out.bin $out/bin
cp disk $out/bin
'';
}
|