diff --git a/debian/mountpoints b/debian/mountpoints deleted file mode 100755 index a25d00a..0000000 --- a/debian/mountpoints +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -if test `id -u` -ne 0 -then - echo "$0 must be run as root." - return -fi - -ROOT=test_environment - -check_mount() { - if mountpoint "$ROOT$1" > /dev/null - then - echo "$ROOT$1 already mounted." - else - mkdir -p "$ROOT$1" - mount -o bind "$1" "$ROOT$1" - fi -} - -check_mount /proc -check_mount /sys -check_mount /dev -check_mount /dev/pts - diff --git a/void/cleanup b/void/cleanup new file mode 100755 index 0000000..0e89bd0 --- /dev/null +++ b/void/cleanup @@ -0,0 +1,86 @@ +#!/bin/sh + +if test `id -u` -ne 0 +then + echo "$0 must be run as root." + return +fi + +FRESH=clean_environment +ROOT=test_environment + +add_mount() { + if mountpoint "$ROOT$1" -q + then + echo "$ROOT$1 already mounted." + else + echo "Mounting $1 to $ROOT$1" + mkdir -p "$ROOT$1" + mount -o bind "$1" "$ROOT$1" + fi +} + +remove_mount() { + if mountpoint "$ROOT$1" -q + then + echo "Unmounting $ROOT$1" + umount "$ROOT$1" + fi +} + +add_mounts() { + add_mount /proc + add_mount /sys + add_mount /dev + add_mount /dev/pts + add_mount /tmp/.X11-unix +} + +remove_mounts() { + remove_mount /tmp/.X11-unix + remove_mount /dev/pts + remove_mount /dev + remove_mount /sys + remove_mount /proc +} + +remove_environment() { + if test -d "$ROOT" + then + # Call this script that automatically unmounts the mount points too. + remove_mounts + echo "Removing $ROOT" + rm -r "$ROOT" + else + echo "No environment found at $ROOT. Doing nothing." + fi +} + +remove_everything() { + if test -d "$ROOT" + then + # Call this script that automatically unmounts the mount points too. + remove_environment + fi + + if test -d "$FRESH" + then + echo "Removing $FRESH" + rm -r "$FRESH" + fi + + if test -f xbps-static*.tar.xz + then + echo "Removing xbps-static tarballs." + rm xbps-static*.tar.xz + fi +} + +case "$1" in + everything) remove_everything ;; + mounts) remove_mounts ;; + add_mounts) add_mounts ;; + environment) remove_environment ;; + "") remove_environment ;; +esac + diff --git a/void/create_environment b/void/create_environment new file mode 100755 index 0000000..6225738 --- /dev/null +++ b/void/create_environment @@ -0,0 +1,63 @@ +#!/bin/sh + +if test `id -u` -ne 0 +then + echo "$0 must be run as root." + return +fi + +ROOT=test_environment +FRESH=clean_environment + +TARBALL=xbps-static-static-0.59_5.x86_64-musl.tar.xz +# See https://xmirror.voidlinux.org/ for other mirrors. +REPO=https://ftp.swin.edu.au/voidlinux + +if test -e "$FRESH" +then + echo "Void installation found at $FRESH. Good." +else + if test -e "$TARBALL" + then + echo "Tarball found." + else + URL="$REPO/static/$TARBALL" + echo "Fetching tarball from $URL" + curl "$URL" -O + fi + + mkdir "$FRESH" + tar xf "$TARBALL" -C "$FRESH" + + mkdir -p "$FRESH/etc/xbps.d" + echo "repository=$REPO/current" > "$FRESH/etc/xbps.d/00-repository-main.conf" + + XBPS_ARCH=x86_64 "$FRESH/usr/bin/xbps-install.static" -r "$FRESH" -S base-system +fi + +if test -e "$ROOT" +then + echo "Existing installation found at $ROOT, removing." + ./cleanup +fi + +echo "Copying $FRESH to $ROOT." +cp -r "$FRESH" "$ROOT" + +echo "Initializing $ROOT." + +chmod 1777 "$ROOT" +chmod 1777 "$ROOT/bin" +chmod 1777 "$ROOT/tmp" +chmod 4755 "$ROOT/usr/bin/sudo" + +# Add DNS configs +cp /etc/resolv.conf "$ROOT/etc/resolv.conf" + +cp -r install_scripts "$ROOT/root" + +./cleanup add_mounts + +chroot "$ROOT" /root/install_scripts/user_setup "$@" + +./cleanup mounts diff --git a/void/enter_environment b/void/enter_environment new file mode 100755 index 0000000..81bc884 --- /dev/null +++ b/void/enter_environment @@ -0,0 +1,22 @@ +#!/bin/sh + +if test `id -u` -ne 0 +then + echo "$0 must be run as root." + return +fi + +ROOT=test_environment + +if test -e "$ROOT" +then + echo "Using existing environment in $ROOT." +else + ./create_environment +fi + +./cleanup add_mounts + +chroot "$ROOT" sudo -iu user "$@" + +./cleanup mounts diff --git a/void/install_scripts/qpq.zrf b/void/install_scripts/qpq.zrf new file mode 100644 index 0000000..e0ff1c3 Binary files /dev/null and b/void/install_scripts/qpq.zrf differ diff --git a/void/install_scripts/user_setup b/void/install_scripts/user_setup new file mode 100755 index 0000000..8195aa0 --- /dev/null +++ b/void/install_scripts/user_setup @@ -0,0 +1,19 @@ +#!/bin/bash + +# Overwrite locale setting specified before the chroot +#export LANG=C +#export LC_ALL=C + +# Add a passwordless sudoer +useradd -m -s /bin/bash -G wheel user +passwd -d user +echo "user ALL=(ALL) NOPASSWD:ALL" > "/etc/sudoers.d/user" +chmod 0440 "/etc/sudoers.d/user" + +# Copy the install scripts into their home directory +cp -r /root/install_scripts /home/user +#chown -R user:user /home/user/install_scripts + +# su to this new user... Or sudo -iu, since we want to pass in arguments too. +cd /home/user +sudo -iu user "$@" diff --git a/void/install_scripts/uwiger.zrf b/void/install_scripts/uwiger.zrf new file mode 100644 index 0000000..934f79b Binary files /dev/null and b/void/install_scripts/uwiger.zrf differ