{ closureInfo, runCommand, e2fsprogs, pigeon-disc-size ? "1G", pigeon-toolchain, pigeon-init, pigeon-run }: let closure = closureInfo { rootPaths = [ pigeon-toolchain ]; }; 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} ''