From 9dad8b47c18fd4b2d919d90b33b8d7d093a3dac2 Mon Sep 17 00:00:00 2001 From: Arslaan Pathan Date: Mon, 8 Jun 2026 13:10:01 +1200 Subject: Add rootfs target, make initramfs output to $out for convenience rather than $out/initramfs.cpio.gz, start working on iso target --- nix/initramfs.nix | 29 ++++++++++++++--------------- nix/iso.nix | 13 +++++++++---- nix/rootfs.nix | 20 ++++++++++++++++---- 3 files changed, 39 insertions(+), 23 deletions(-) (limited to 'nix') diff --git a/nix/initramfs.nix b/nix/initramfs.nix index db2b313..5d023c4 100644 --- a/nix/initramfs.nix +++ b/nix/initramfs.nix @@ -1,19 +1,18 @@ { stdenv, kernel, busybox, cpio }: stdenv.mkDerivation { - name = "initramfs-yerba"; - src = ./.; - buildInputs = [ cpio ]; - buildPhase = '' - mkdir -p $out - mkdir -p initramfs/bin - cp -a ${busybox}/_install/* initramfs/ - cp ${../initramfs_init} initramfs/init - chmod +x initramfs/init - cd initramfs - find . | cpio -o -H newc | gzip > $out/initramfs.cpio.gz - ''; - installPhase = '' - echo "initramfs built" - ''; + name = "initramfs-yerba"; + src = ./.; + buildInputs = [ cpio ]; + buildPhase = '' + mkdir -p initramfs/bin + cp -a ${busybox}/_install/* initramfs/ + cp ${../initramfs_init} initramfs/init + chmod +x initramfs/init + cd initramfs + find . | cpio -o -H newc | gzip > $out + ''; + installPhase = '' + echo "initramfs built" + ''; } diff --git a/nix/iso.nix b/nix/iso.nix index 3c220a2..36cabf0 100644 --- a/nix/iso.nix +++ b/nix/iso.nix @@ -1,13 +1,18 @@ -{ stdenv, fetchgit, kernel, initramfs, limine, rootfs }: +{ stdenv, fetchgit, kernel, initramfs, limine, rootfs, xorriso }: stdenv.mkDerivation { name = "iso-yerba"; src = ./.; + buildInputs = [ xorriso ]; + nativeBuildInputs = [ xorriso ]; buildPhase = '' - echo "todo actually build iso" - mkdir -p $out + mkdir -p iso/boot/limine + mkdir -p iso/EFI/BOOT + mkdir -p iso/yerba + cp ${linux} iso/boot/bzImage + cp ${initramfs} iso/boot/initramfs.cpio.gz ''; installPhase = '' - echo "todo actually install iso" + echo "iso built" ''; } diff --git a/nix/rootfs.nix b/nix/rootfs.nix index 4a771be..fc5d321 100644 --- a/nix/rootfs.nix +++ b/nix/rootfs.nix @@ -1,13 +1,25 @@ -{ stdenv, fetchgit, busybox }: +{ stdenv, fetchgit, busybox, squashfsTools }: stdenv.mkDerivation { name = "rootfs-yerba"; src = ./.; + buildInputs = [ squashfsTools ]; + nativeBuildInputs = [ squashfsTools ]; buildPhase = '' - echo "todo actually build rootfs" - mkdir -p $out + mkdir -p rootfs + mkdir -p rootfs/{bin,sbin,etc,proc,sys,dev,home,var,usr,root,mnt,tmp} + cp -a ${busybox}/_install/. rootfs/ + # this says permission denied, cant be bothered to debug, let's just hope we can chroot to /sbin/init in the initramfs and it works? + # ln -sf sbin/init rootfs/init + 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 "::askfirst:/bin/sh" >> rootfs/etc/inittab + echo "::ctrlaltdel:/sbin/reboot" >> rootfs/etc/inittab + mksquashfs rootfs $out -comp zstd -noappend ''; installPhase = '' - echo "todo actually install rootfs" + echo "rootfs built" ''; } -- cgit v1.2.3