diff --git a/flake.nix b/flake.nix index 8e91ce6..0a64679 100644 --- a/flake.nix +++ b/flake.nix @@ -42,7 +42,7 @@ cp -r ${self.packages.${system}.systemd.out}/* out/ pushd out - chmod 755 etc usr/lib usr/bin + find . -type d -exec chmod 755 {} \; mkdir -p dev proc sys tmp root ln -sf usr/bin bin @@ -51,15 +51,12 @@ ln -sf usr/lib lib64 ln -sf ../proc/self/mounts etc/mtab - ln -sf usr/lib/systemd/systemd init - - ln -sf systemd/libsystemd-core-257.so usr/lib/ - ln -sf systemd/libsystemd-shared-257.so usr/lib/ + ln -sf ../usr/lib/systemd/systemd init echo patos > ./etc/hostname cat <<EOF > ./etc/os-release - NAME="Patos" - PRETTY_NAME="Patos Platform" + NAME="PatOS" + PRETTY_NAME="PatOS Platform" ID=patos EOF @@ -116,20 +113,22 @@ chmod 644 ./etc/group # install busybox - cp ${pkgs.busybox.out}/bin/busybox ./usr/bin/ - ./usr/bin/busybox --list | while read f; do - ln -sf busybox ./usr/bin/$f - done + cp ${pkgs.busybox.out}/bin/busybox usr/bin/ + usr/bin/busybox --list | xargs -I {} ln -sf busybox usr/bin/{} # get shared libs find . -type f -executable | xargs ldd 2> /dev/null | awk '{print $3}' | grep -v systemd | sort -u | xargs cp -t usr/lib find . -type f -executable | xargs chmod 755 - # FIXME: hacky patch elf patching. Is there a better way???????? - find . -type f -executable -print | xargs -I {} ${pkgs.lib.getExe pkgs.patchelf} --set-rpath /lib {} 2> /dev/null + # FIXME: hacky(?) ELF patching. Is there a better way???????? + find . -type f -executable -print | xargs -I {} ${pkgs.lib.getExe pkgs.patchelf} --set-rpath /lib:/usr/lib:/usr/lib/systemd {} 2> /dev/null find . -type f -executable -print | xargs -I {} ${pkgs.lib.getExe pkgs.patchelf} --set-interpreter /lib/ld-linux-x86-64.so.2 {} 2> /dev/null - cp ${self.packages.${system}.glibc.out}/lib/ld-linux-x86-64.so.2 lib/ - ${pkgs.lib.getExe pkgs.patchelf} --remove-rpath lib/ld-linux-x86-64.so.2 + cp ${ + self.packages.${system}.glibc.out + }/lib/ld-linux-x86-64.so.2 lib/ && ${pkgs.lib.getExe pkgs.patchelf} --remove-rpath lib/ld-linux-x86-64.so.2 + + # strip binaries + find . -type f -executable | xargs strip 2> /dev/null # gen initrd find . -print0 | ${pkgs.lib.getExe pkgs.cpio} --null --owner=root:root -o --format=newc | ${pkgs.lib.getExe pkgs.gzip} -9 > ../initrd.gz diff --git a/systemd/default.nix b/systemd/default.nix index 7537aeb..ce35023 100644 --- a/systemd/default.nix +++ b/systemd/default.nix @@ -188,13 +188,14 @@ stdenv.mkDerivation (finalAttrs: { (lib.mesonOption "tty-gid" "3") # tty in NixOS has gid 3 (lib.mesonOption "kmod-path" "/bin/kmod") - (lib.mesonOption "debug-shell" "/bin/bash") + (lib.mesonOption "debug-shell" "/bin/sh") (lib.mesonOption "pamconfdir" "/etc/pam.d") (lib.mesonOption "shellprofiledir" "/etc/profile.d") (lib.mesonOption "dbuspolicydir" "/usr/share/dbus-1/system.d") (lib.mesonOption "dbussessionservicedir" "/usr/share/dbus-1/services") (lib.mesonOption "dbussystemservicedir" "/usr/share/dbus-1/system-services") (lib.mesonOption "setfont-path" "/bin/setfont") + (lib.mesonOption "loadkeys-path" "/bin/loadkeys") (lib.mesonOption "sulogin-path" "/bin/sulogin") (lib.mesonOption "nologin-path" "/bin/nologin") (lib.mesonOption "mount-path" "/bin/mount")