ARG TARGET=x86_64-unknown-linux-musl FROM stagex/pallet-rust:sx2025.06.1 AS pallet-rust FROM stagex/user-eif_build:sx2025.06.1 AS eif_build FROM stagex/user-gen_initramfs:sx2025.06.1 AS gen_initramfs FROM stagex/user-linux-nitro:sx2025.06.1 AS linux-nitro FROM scratch as build-nit ARG TARGET # ENV TARGET=${TARGET} ENV RUSTFLAGS="-C target-feature=+crt-static" ENV CARGOFLAGS="--locked --no-default-features --features aws --release --target ${TARGET}" COPY --from=pallet-rust . / COPY --from=linux-nitro /bzImage . COPY --from=linux-nitro /linux.config . ADD . /nit WORKDIR /nit RUN cargo build ${CARGOFLAGS} FROM scratch AS build-eif ARG TARGET # ENV TARGET=${TARGET} # just to provide us w/ some base utils. we should probably make some kind of # base pallet that provides busybox and musl, just because i'm lazy and it's # needed, well, everywhere COPY --from=pallet-rust . / COPY --from=gen_initramfs . / COPY --from=eif_build . / WORKDIR /build_cpio COPY --from=build-nit /nit/target/${TARGET}/release/nit init ENV KBUILD_BUILD_TIMESTAMP=1 COPY initramfs.list /build_cpio/initramfs.list RUN find . -exec touch -hcd "@0" "{}" + && \ gen_init_cpio -t 1 initramfs.list > rootfs.cpio && \ touch -hcd "@0" rootfs.cpio WORKDIR /build_eif COPY --from=linux-nitro /bzImage /build_eif/bzImage COPY --from=linux-nitro /linux.config /build_eif/linux.config RUN mkdir /build_eif/out RUN eif_build \ --kernel /build_eif/bzImage \ --kernel_config /build_eif/linux.config \ --ramdisk /build_cpio/rootfs.cpio \ --pcrs_output /build_eif/out/nitro.pcrs \ --output /build_eif/out/nitro.eif \ --cmdline 'reboot=k initrd=0x2000000,3228672 root=/dev/ram0 panic=1 pci=off nomodules console=ttyS0 i8042.noaux i8042.nomux i8042.nopnp i8042.dumbkbd' RUN ls -la /build_eif/out FROM scratch AS package COPY --from=build-eif /build_eif/out /