aboutsummaryrefslogtreecommitdiff
path: root/nix
diff options
context:
space:
mode:
Diffstat (limited to 'nix')
-rw-r--r--nix/initramfs.nix29
-rw-r--r--nix/iso.nix13
-rw-r--r--nix/rootfs.nix20
3 files changed, 39 insertions, 23 deletions
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"
'';
}