# A hello-world example. ARG DOMAIN_NAME 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 base ENV TARGET=x86_64-unknown-linux-musl ENV RUSTFLAGS="-C target-feature=+crt-static" ENV CARGOFLAGS="--locked --all-features --release --target ${TARGET}" ENV OPENSSL_STATIC=true COPY --from=pallet-rust . / COPY --from=gen_initramfs . / COPY --from=eif_build . / COPY --from=linux-nitro /bzImage . COPY --from=linux-nitro /linux.config . ADD . /src FROM base as build WORKDIR /src RUN cargo build ${CARGOFLAGS} WORKDIR /build_cpio RUN cp /src/target/${TARGET}/release/nit init RUN cp /src/target/${TARGET}/release/hello hello ENV KBUILD_BUILD_TIMESTAMP=1 ARG DOMAIN_NAME COPY < rootfs.cpio touch -hcd "@0" rootfs.cpio EOF WORKDIR /build_eif RUN eif_build \ --kernel /bzImage \ --kernel_config /linux.config \ --ramdisk /build_cpio/rootfs.cpio \ --pcrs_output /nitro.pcrs \ --output /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' FROM base as install WORKDIR /rootfs COPY --from=build /nitro.eif . COPY --from=build /nitro.pcrs . FROM scratch as package COPY --from=install /rootfs .