From 9f3c80e77452ad5ad423efb3765efb68fa02f6af Mon Sep 17 00:00:00 2001
From: Daniel Barlow <dan@telent.net>
Date: Tue, 11 Apr 2023 23:08:02 +0100
Subject: [PATCH] make initramfs busybox (very slightly) smaller

---
 modules/initramfs.nix | 29 +++++++++++++++++++++--------
 1 file changed, 21 insertions(+), 8 deletions(-)

diff --git a/modules/initramfs.nix b/modules/initramfs.nix
index 31ec94d61..a0359f831 100644
--- a/modules/initramfs.nix
+++ b/modules/initramfs.nix
@@ -22,13 +22,20 @@ in
     outputs = {
       initramfs =
         let
-          bb = pkgs.busybox.override {
+          bb1 = pkgs.busybox.override {
             enableStatic = true;
             enableMinimal = true;
             enableAppletSymlinks  = false;
+
             extraConfig  = ''
-              CONFIG_ASH y
-              CONFIG_LS y
+              CONFIG_DESKTOP n
+              CONFIG_ASH n
+              CONFIG_HUSH y
+              CONFIG_HUSH_TICK y
+              CONFIG_HUSH_LOOPS y
+              CONFIG_HUSH_CASE y
+              CONFIG_HUSH_ECHO y
+              CONFIG_HUSH_SET y
               CONFIG_LN y
               CONFIG_CAT y
               CONFIG_MOUNT y
@@ -40,18 +47,23 @@ in
               CONFIG_CHMOD y
               CONFIG_MKDIR y
               CONFIG_MKNOD y
-              CONFIG_SH_IS_ASH y
               CONFIG_BASH_IS_NONE y
+              CONFIG_SH_IS_NONE y
+              CONFIG_SH_IS_ASH n
               CONFIG_FEATURE_SH_STANDALONE y
               CONFIG_FEATURE_PREFER_APPLETS y
+              CONFIG_BUSYBOX_EXEC_PATH "/bin/busybox"
             '';
           };
+          bb = bb1.overrideAttrs(o: {
+            makeFlags = [];
+          });
           slashinit = pkgs.writeScript "init" ''
-            #!/bin/sh
+            #!/bin/hush
             exec >/dev/console
             echo Running in initramfs
             mount -t proc none /proc
-            set -- $(cat /proc/cmdline)
+            set -- `cat /proc/cmdline`
             for i in "$@" ; do
               case "''${i}" in
                 root=*)
@@ -62,7 +74,7 @@ in
             echo mount -t jffs2 ''${rootdevice} /target/persist
             mount -t jffs2 ''${rootdevice} /target/persist
             mount -o bind /target/persist/nix /target/nix
-            sh /target/persist/activate /target
+            hush /target/persist/activate /target
             cd /target
             mount -o bind /target /
             exec chroot . /bin/init "$@"
@@ -80,7 +92,8 @@ in
           nod /dev/console 0600 0 0 c 5 1
           dir /bin 0755 0 0
           file /bin/busybox ${bb}/bin/busybox 0755 0 0
-          slink /bin/sh /bin/busybox 0755 0 0
+          slink /bin/hush /bin/busybox 0755 0 0
+          slink /bin/chroot /bin/busybox 0755 0 0
           file /init ${slashinit} 0755 0 0
           SPECIALS
         '';