2026-10-15 01:10:33 -04:00
|
|
|
{
|
|
|
|
|
closureInfo, runCommand,
|
|
|
|
|
e2fsprogs,
|
|
|
|
|
pigeon-disc-size ? "1G",
|
2026-10-15 01:40:00 -04:00
|
|
|
pigeon-toolchain,
|
2026-10-15 01:10:33 -04:00
|
|
|
pigeon-init,
|
|
|
|
|
pigeon-run
|
|
|
|
|
}:
|
|
|
|
|
|
|
|
|
|
let
|
2026-10-15 01:40:00 -04:00
|
|
|
closure = closureInfo { rootPaths = [ pigeon-toolchain ]; };
|
2026-10-15 01:10:33 -04:00
|
|
|
in
|
|
|
|
|
runCommand "pigeon-rootfs" { nativeBuildInputs = [ e2fsprogs ]; } ''
|
|
|
|
|
mkdir -p rootfs && cd rootfs
|
|
|
|
|
mkdir -p dev proc sys tmp usr nix/store root/student root/grader root/results
|
|
|
|
|
chmod 700 root
|
|
|
|
|
|
|
|
|
|
for FILE in $(cat ${closure}/store-paths); do
|
|
|
|
|
cp -a "$FILE" nix/store
|
|
|
|
|
done
|
|
|
|
|
ln -s ${pigeon-toolchain}/bin bin
|
|
|
|
|
ln -s ${pigeon-toolchain}/bin usr/bin
|
|
|
|
|
install -m 755 ${pigeon-init}/bin/pigeon-init init
|
|
|
|
|
install -m 755 ${pigeon-run}/bin/pigeon-run run
|
|
|
|
|
|
|
|
|
|
cd ..
|
|
|
|
|
mkfs.ext4 -q -F -d rootfs $out ${pigeon-disc-size}
|
|
|
|
|
''
|