reorganise
This commit is contained in:
68
bootle/package.nix
Normal file
68
bootle/package.nix
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
callPackage,
|
||||
rust-bin,
|
||||
naersk,
|
||||
bootler,
|
||||
qemu,
|
||||
...
|
||||
}: let
|
||||
rust-toolchain = rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
|
||||
naersk' = callPackage naersk {
|
||||
cargo = rust-toolchain;
|
||||
rustc = rust-toolchain;
|
||||
clippy = rust-toolchain;
|
||||
};
|
||||
in (naersk'.buildPackage {
|
||||
src = ./.;
|
||||
|
||||
# deps for rust-src
|
||||
additionalCargoLock = "${rust-toolchain.availableComponents.rust-src}/lib/rustlib/src/rust/library/Cargo.lock";
|
||||
|
||||
# just library build
|
||||
copyBins = false;
|
||||
copyLibs = true;
|
||||
release = true;
|
||||
|
||||
# build std
|
||||
cargoBuildOptions = x:
|
||||
x
|
||||
++ [
|
||||
"-Zbuild-std"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
ld --oformat binary \
|
||||
-o kernel.bin \
|
||||
-T src/linker.ld \
|
||||
-e _start \
|
||||
target/x86_64-unknown-none/release/libbootle.a
|
||||
|
||||
dd if=/dev/zero of=disk bs=512 count=2
|
||||
dd if=${bootler}/bin/boot.bin of=disk conv=notrunc
|
||||
dd if=kernel.bin of=disk bs=512 seek=1 conv=notrunc
|
||||
|
||||
mkdir -p $out/lib
|
||||
mkdir -p $out/bin
|
||||
|
||||
cat<<EOF>$out/bin/bootle
|
||||
#!/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 \
|
||||
-drive file=./.bootle/disk,format=raw,index=0,media=disk
|
||||
|
||||
rm ./.bootle -r
|
||||
|
||||
EOF
|
||||
|
||||
chmod +x $out/bin/bootle
|
||||
|
||||
cp target/x86_64-unknown-none/release/libbootle.a $out/lib
|
||||
cp kernel.bin $out/bin
|
||||
cp disk $out/bin
|
||||
'';
|
||||
})
|
||||
Reference in New Issue
Block a user