From c200c89b75cd9185ba3c53b70868890217a7db8b Mon Sep 17 00:00:00 2001 From: Jarvis Carroll Date: Mon, 2 Jun 2025 23:36:08 +1000 Subject: [PATCH] Add scripts for Void scripts --- debian/mountpoints | 25 ---------- void/cleanup | 86 ++++++++++++++++++++++++++++++++ void/create_environment | 63 +++++++++++++++++++++++ void/enter_environment | 22 ++++++++ void/install_scripts/qpq.zrf | Bin 0 -> 2298 bytes void/install_scripts/user_setup | 19 +++++++ void/install_scripts/uwiger.zrf | Bin 0 -> 2294 bytes 7 files changed, 190 insertions(+), 25 deletions(-) delete mode 100755 debian/mountpoints create mode 100755 void/cleanup create mode 100755 void/create_environment create mode 100755 void/enter_environment create mode 100644 void/install_scripts/qpq.zrf create mode 100755 void/install_scripts/user_setup create mode 100644 void/install_scripts/uwiger.zrf 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 0000000000000000000000000000000000000000..e0ff1c36b6b2d7378051ef06e32b325461490d07 GIT binary patch literal 2298 zcmV~Wpi|4ZE$D;XaiyZ00-$|1Yrqi17QGRDq#+H18Ze@ zZ2$lOKp~00|ofs8jcx#x=Jnh#?UGtJGcCTk=Jc;wi$)CoxjMt#+h1Wh*ziG zLn7ev$Q7vl=9=+`n0k`BGDa_0&4&cdT(uTE^%;i zE^~Kjb8}(<04y(e19ft2YIg;4WnpY>YXAdraB*z_00<5+f(Qx%f(QWsyp;h>t%EZ8 zZd@=k&O8UIGw!vbR~AxO`{@w-ClOkdvebU-b0V+^8ziYJzc{O`!-Zb3h3K?Gtm|Q>+1@gL-5K z-ha`KaD(<|#>Lh6+CTb#@Ktyu`4=xprYArx>4yAlUz?qoKWuhXh)nECg;3G{v9Xo| z{B|gIcydJ@*u5E-S^d}Q#6NhVdFfByAK@CI-uu>E^*UvU#XfSs>o`P(4Z$R<$xOEa zt@V$W?W!ZR_ziISzgJI1|IaE^VXD#O{VWE=qL^Lv2oc%m8^90>&wEW>4#Bb@4lh=s z&_HkT_&kWWd&_79XjdP09p`z`;Um1lb#P>ppzdi}htg$km(}WI2A2R^;yf{ON<4HT zXncvu$`2F8a_IJS!XLz3k-sZNe@TSf&xt0vU*89t-S-fv6*<)5$S6{x`?l=$39r%U zH#q8Hsmr(FhTe)VI)WDs`L{5-ERV{Oa7N=)tOd??xfb%_{zCWOwOG6V)k*A0p$lKu zO*U1|fzW?Mknz~TD9#BZFm^_~-V@pqH@yW)Cu9@JR_{*MlttRQSD>6DWyxR6fcp5P zFMrV!{Ct6ZFJIbYU*5g5hpA+Wge_N{X5p2T4}hB0!Kz7$LL+yz{FJ3pI}sGyYM`=B zK~`FnE?i)WHZ<$A0fp(JpxNQiY%=Q|@|hdzHblT|V%?Nzq3XOA8eP?J&09OUuad>h5t$dOQr48un@h+*q9H#`w; zh?wXi`%-pb_zrJyqsBs%U5Z<&ioy$a+qHDwE=l3w{Ol{$_j_bnL1nf;c}8@T(pbG^ zanLE%IL{TyK~hM3?_nH%J+l-5$g4D4K`opg&Qc%$Yfy@EwL@DuA@W8TZJSv23WYA& z4^8^?Llvg?QjwDwQH3D`mbd08Mezb%#k0=St`v0hh(|rB+6Z5Pe-8>haKFIu%dVS) z@v;Q=Eb+q6Fcjm*J+%;mhtgJX{CrnA3WpG?l;o_A;9#nOS@oI`4(}8feUjUkzv7@T z?l_T=3Q=luUE$U{`Nqu+)X>JQLocj8(-np%!`00c0X(F~L=`r|>{x=_3P+|!V^dC9 zXS42u6nt>&ipRnKdNkjS8Gp+y%GD?!Vn7A?*CwW{QGBIX!hrrB-D&Q=z};yEfx;P% zw#3s&_ZIeOEX?kfktGn<3|xmib>9aV%^MN7igv+gTI&$iU@y;1Kn~l9`=DdQ(-@Ij zSXoTudVusq$HL6dY0T#?_?G+sj2!3;6Y9@5+s@|{?CWH9UV(nwIehjU?TRCGf*lr( z&|+ZJYvZE8aihWA!)Pp&RireBHb5g-7`n+I;MzCUl$?Z6qQl-}2GdLV4SDN|PQ?(1 zRahEXjnN8;t)_GzzmA+SLjuXam@B zK@twd>J2xVD&YA-+RNrFnJ|fgT!!(mx*Y&R8erC`SNSEPAM5XyD(f<>6w&b{J<(+* zoZ{qO8h3gP85!00kjWGsD^_Ibju#Afi%8>Gok{V`c zAIyC{stMzW&V~+X&!ZFX`8dwnqUCdj65$n4N`zslSmLQ|g`!2`4g+jMqHCxHFiZGQ zVWx3FrxC!>wij`2>M_C|uJ0CWJa>lM!rgf!ugi(BfW}XF~vGEMQZe#)UrUl^Q-+b7Mx{5uEJjS{BJJA{`1RJeUE8xq!ougo%!CAKd_H6nx=jW+U z zk_<(H_(r1Ey^PoQdaVLEqe2`bZ`^`7t2~l1`1=7R!E(Y}e-G6Z0`M2q4lG)dum(YN z6UOxl!M{ra$10iZF{JU~`!TD&FSJ zZfTmOYSPabQ4+2BVh;&j$l1Xo`NcShCswC1iJphQ7s|nZgstb+_h4F264Q;98_%<@ zJoG%g&~yRoWQYEIFGYU{s9Sa*Z=s}#>57D0(?k3Rwv0tPVvG*SjGj>Ad?GH#6@Z82=a>)2%q$Coo!Fyd(X9fmLUUoMZPp@ zEp{oXv~OSNdSS@pWwb$;uZMdaPjAkK(FdkY*;!>pgUMBrTij#*ybiw|7)kh|JEjK} z>ec#S2HOfO>9d6s(mddNOJiy3THulIFlyS1JTa>}i9@vM{6#{34=A|0Y1WoXYmg U)+$~@sUuui|1Sg00s{d60d-<*)&Kwi literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..934f79b218bc53d7c9177b352c17e871f8f6d9e7 GIT binary patch literal 2294 zcmV~Wpi|4ZE$D;XaiyZ00-$|1Yr_r17QbY0AU|@18Ze@ zZ2$lOKn_q+12@G47d}n_!HI5_i&qXc#BEw&M{?ySO|crYsM*_!lwafr6DJn+xp6|> zBzwSHD7CMsR=2@^Qv=$0gLegUd2?@YXaj2i26cC7XJvA000~uWW*}E-XJv9|0&4&T zWo=<;Y-<1wb!=upcWGy3axQLVbaw@Ca%pX4XaZ{h5_)fKa4vOhW-fPWXJv9OZe?_0 z001m6cLQ~DY-)D}a%Ev`ZEFAqb$4lJWpZr*00<5+f(Qx%f(QWsph`9v%kT(7DE@PE z^YM#G|DLc!PG7rDrPO_9j{G`Sp4fpIM~;Q96!l6$gRWW&M^PjN29Nv>^Bg!P`*apH7u-A9MdZOX5)N&-(z zANSWuE}Gac$D2T-_fu%`?7-xts3>G!aA8eB_%98Ck7}-Kg}?@hFl;?G(<5K(P%ONC zHA(6aPfwHo&(@tTq4iXObP zTSAj$f-XS=88a_YTO@M}&GR!xQMYADY}Y#KNa~GF8v+NrqC*|3{pL z-<{7jLawCj>sspBg13$r#*?~-_-J*}{W+gges;LI*rg4rrLNHmL>oY~c?zpc5sNHQ zyuL%d=YmL-^o!`Bb^c78~%);jE` zat*)sg>Q5`w{Nkwjm~)-0N{+M6j~F`6uEqe7af<(J73ND(|L&CZZg*h0W{(zF&|t& zA9%QG^@SRqEJV)B?oO}Vu*n0wO};#%=T~9-I?HskV*Q{4@lu_(SoVm^k0`W?pO&Nn z4~Br_2d2Iv37C3-;k9s@28)OdTMq=XLn&<(u3QFTuNQ6GYQ;k(I3LHZP+mt0a%Wi8PW9}HOmm^@{+C5<4VknHbyul}P|7spqN7j`ww7M?iH~(liqmy`16#mRaZ-LihLD2}JmuGQHpO5LzT8OC}S zT1PZih$ePG7nZdKaia)oa?a2lV;j5^|Bpe9KC2}4yLMk9iD3=XaHgQ1XqKkau}DU2u51)Xbq(bKERUXLo2Irqvg=`1 z+`V$~;GdIC-HD!YFBO$jA=z!|jyc~Ko_3TkcJ{%?To&EBZ5AS<(zCE{{0)^&q@UJ8& zj)cbRDa$RyBWnJ|<~bolrJum582BD*^eB0#f=xM0*xxlG)+24}fE<1=egXVXL8Bc` zK#9MrdkI(>F@T6^#!%(TJopM@Xuwm$cXq;w#bBH=(vB^EDdX}AhoQUvY* zy^p)A>eJ{z)2%Ps3NqDB>E0Y{E}E_ZzmW_~^aZ0qr`AX%Eh{5i6I7r$H6pz}C=Kvx zrAGI_NjyMnD%GM!7rJc0Jqmi-yt1g8gMQ9KGbUBIMq{A>w!gD=?KdZ$op?>dcb99y zW}vS^I*mt2Cvy~xT<2UIup{)QvQDGs^>_CM`y>3Ew)k9b$2!535pDD36~2|A&GOnl zT>?WIYQmyPLQUF^hcCK(_YiA&t43LamlDY{?XL1c-Dlm6u~K#}izw}hGa&HT1XBKk ze8a0(x3VW%8M@VYQnTc&8ibF5E>KWDMfkg%_+>%pIwW3#gk%Q*gu;9YB(8=gqpc%4 zGp%6dcRl=EVdW9}2Ls+BO1GYZY}=QHUH;6Um<;$nq&0QYMrQ z>~ExjmMvia=VW)S4_<#)I_RaUdK