auto-scripts/auto-alpine-sandbox
#!/usr/bin/env bash
ARCH="x86_64"
ALPINE_VER="3.24"
ALPINE_SUB_VER="2"
USER_ID=$(id -u)
HOME_IN_CHROOT="/home/user"
PROJECT_NAME=$1
mkdir -p $PROJECT_NAME/ctr
cd $PROJECT_NAME/ctr
curl -L https://dl-cdn.alpinelinux.org/alpine/v$ALPINE_VER/releases/$ARCH/alpine-minirootfs-$ALPINE_VER.$ALPINE_SUB_VER-$ARCH.tar.gz -o alpine.tar.gz
tar xzf alpine.tar.gz
rm alpine.tar.gz
cd ..
mkdir -p "./ctr/run/user/$USER_ID"
echo "#!/usr/bin/env bash
xhost +
bwrap \
--die-with-parent \
--unshare-pid \
--unshare-user \
--uid "$USER_ID" \
--bind ./ctr / \
--bind "/run/user/$USER_ID" "/run/user/$USER_ID" \
--setenv HOME $HOME_IN_CHROOT \
--setenv XDG_RUNTIME_DIR "/run/user/$USER_ID" \
--setenv PULSE_SERVER "unix:/run/user/$USER_ID/pulse/native" \
--dev-bind /dev/snd /dev/snd \
--dev /dev \
--proc /proc \
--tmpfs /tmp \
--ro-bind /etc/resolv.conf /etc/resolv.conf \
"\$1"
" > run_sandbox.sh
echo "#!/bin/sh
/sbin/apk update
/sbin/apk add pulseaudio-utils pipewire-pulse alsa-utils fontconfig font-noto font-dejavu
/bin/touch "/run/user/$USER_ID/pipewire-0"
"> ./ctr/usr/local/bin/setup_sandbox.sh
chmod +x ./ctr/usr/local/bin/setup_sandbox.sh
cat > shell.sh <<'EOF'
#!/bin/sh
exec ./run_sandbox.sh "/bin/ash -l"
EOF
chmod +x *.sh
./run_sandbox.sh /usr/local/bin/setup_sandbox.sh
cd ..