diff --git a/fish/.config/fish/functions/fish_prompt.fish b/fish/.config/fish/functions/fish_prompt.fish index a2e5205..f4407f7 100644 --- a/fish/.config/fish/functions/fish_prompt.fish +++ b/fish/.config/fish/functions/fish_prompt.fish @@ -1 +1,5 @@ -source ("starship" init fish --print-full-init | psub) +if [ $CHROOTED ] + alias fish_prompt='echo "[chroot]" (pwd) "> "' +else + source ("starship" init fish --print-full-init | psub) +end diff --git a/utils/.local/bin/launch-chroot b/utils/.local/bin/launch-chroot new file mode 100755 index 0000000..70536c5 --- /dev/null +++ b/utils/.local/bin/launch-chroot @@ -0,0 +1,13 @@ +#!/bin/sh + +# use with sudo -E + +ROOTDIR="${1:-/mnt}" +USERNAME="${SUDO_USER:-ericonr}" + +chroot "$ROOTDIR" /bin/sudo -u $USERNAME \ + env CHROOTED=1 \ + XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR \ + WAYLAND_DISPLAY=$WAYLAND_DISPLAY \ + DISPLAY=$DISPLAY \ + /bin/fish -C "cd" diff --git a/utils/.local/bin/mount-zvol b/utils/.local/bin/mount-zvol new file mode 100755 index 0000000..eb38059 --- /dev/null +++ b/utils/.local/bin/mount-zvol @@ -0,0 +1,6 @@ +#!/bin/sh + +DEVICE="${1:-zroot/ROOT/glibc}" +MOUNT="${2:-/mnt}" + +mount -o zfsutil -t zfs "$DEVICE" "$MOUNT" diff --git a/void/void.d/etc-x86/sv/chroot-mnt/finish b/void/void.d/etc-x86/sv/chroot-mnt/finish new file mode 100755 index 0000000..4e48b89 --- /dev/null +++ b/void/void.d/etc-x86/sv/chroot-mnt/finish @@ -0,0 +1,14 @@ +#!/bin/sh + +ROOTDIR=/mnt + +umount -R \ + "$ROOTDIR/dev" \ + "$ROOTDIR/proc" \ + "$ROOTDIR/sys" \ + "$ROOTDIR/etc/resolv.conf" \ + "$ROOTDIR/tmp" \ + "$ROOTDIR/home" \ + "$ROOTDIR/run" + +rm -f "$ROOTDIR/chrooted" diff --git a/void/void.d/etc-x86/sv/chroot-mnt/run b/void/void.d/etc-x86/sv/chroot-mnt/run new file mode 100755 index 0000000..37c6393 --- /dev/null +++ b/void/void.d/etc-x86/sv/chroot-mnt/run @@ -0,0 +1,24 @@ +#!/bin/sh + +ROOTDIR=/mnt + +mount -o zfsutil -t zfs zroot/ROOT/glibc "$ROOTDIR" + +if ! [ -e "$ROOTDIR/chrooted" ]; then + # chroot has been launched already + + # xchroot commands + mount --rbind /dev "$ROOTDIR/dev" + mount --rbind /proc "$ROOTDIR/proc" + mount --rbind /sys "$ROOTDIR/sys" + touch "$ROOTDIR/etc/resolv.conf" + mount --bind /etc/resolv.conf "$ROOTDIR/etc/resolv.conf" + + mount --bind /tmp "$ROOTDIR/tmp" + mount --bind /home "$ROOTDIR/home" + mount --rbind /run "$ROOTDIR/run" + + touch "$ROOTDIR/chrooted" +fi + +exec pause diff --git a/void/void.d/etc-x86/sv/chroot-mnt/supervise b/void/void.d/etc-x86/sv/chroot-mnt/supervise new file mode 120000 index 0000000..deb5189 --- /dev/null +++ b/void/void.d/etc-x86/sv/chroot-mnt/supervise @@ -0,0 +1 @@ +/run/runit/supervise.chroot-mnt \ No newline at end of file diff --git a/void/void.d/system/service-and-tz.sh b/void/void.d/system/service-and-tz.sh index b03431a..64bea82 100755 --- a/void/void.d/system/service-and-tz.sh +++ b/void/void.d/system/service-and-tz.sh @@ -10,9 +10,9 @@ fi echo "Installing services" for service in \ - alsa bluetoothd boltd chronyd dbus dhcpcd elogind iwd popcorn snooze-daily + bluetoothd boltd chronyd dbus dhcpcd elogind iwd popcorn snooze-daily do - if [ -r "/etc/sv/${service}" ] ; then + if [ -r "$MOUNTDIR/etc/sv/${service}" ] ; then ln -s "/etc/sv/${service}" "$SERVICES" echo "Installed service ${service}" else @@ -20,5 +20,7 @@ do fi done +cp -r etc-x86/sv/chroot-mnt "$SERVICES" + echo "Setting timezone" ln -s /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime