{ stdenv, fetchgit, busybox, tcc, squashfsTools, linuxHeaders, musl }: stdenv.mkDerivation { name = "rootfs-yerba"; src = ./.; buildInputs = [ squashfsTools ]; nativeBuildInputs = [ squashfsTools linuxHeaders ]; buildPhase = '' # Basic setup start mkdir -p rootfs mkdir -p rootfs/{bin,sbin,etc,proc,sys,dev,home,var,usr,root,mnt,tmp,lib} mkdir -p rootfs/usr/{lib,bin} chmod -R u+w rootfs # Basic setup end # Musl start cp -a ${musl}/lib/* rootfs/usr/lib/ chmod -R u+w rootfs ln -sf /usr/lib/ld-musl-x86_64.so.1 rootfs/lib/ld-musl-x86_64.so.1 chmod -R u+w rootfs ln -sf /usr/lib/libc.so rootfs/lib/libc.so # Musl end # Busybox start cp -a ${busybox}/_install/. rootfs/ chmod -R u+w rootfs ln -sf /bin/busybox rootfs/init # Busybox end # Programs start cp -a ${tcc}/bin/* rootfs/usr/bin/ 2>/dev/null || true cp -a ${tcc}/lib/* rootfs/usr/lib/ 2>/dev/null || true chmod -R u+w rootfs ln -sf /usr/bin/tcc rootfs/usr/bin/cc # Programs end # Basic files setup start echo "proc /proc proc defaults 0 0" > rootfs/etc/fstab echo "sysfs /sys sysfs defaults 0 0" >> rootfs/etc/fstab echo "devtmpfs /dev devtmpfs defaults 0 0" >> rootfs/etc/fstab echo "::sysinit:/bin/mount -a" > rootfs/etc/inittab echo "tty0::askfirst:/bin/sh" >> rootfs/etc/inittab echo "ttyS0::askfirst:/bin/sh" >> rootfs/etc/inittab echo "::ctrlaltdel:/sbin/reboot" >> rootfs/etc/inittab echo "yerba-live" > rootfs/etc/hostname # Basic files setup end # Squashfs start mksquashfs rootfs $out -comp zstd -noappend # Squashfs end ''; installPhase = '' echo "rootfs built" ''; }