Compare commits

..

3 Commits

Author SHA1 Message Date
Amir Alexander Abdelbaki 69f5b3c13b feat(modules): add sauerbraten and stuntrally modules
sauerbraten: open-source Cube 2 FPS (pacman)
stuntrally: rally racing game via Flatpak (io.github.stuntrally.StuntRally3)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 00:17:17 +02:00
Amir Alexander Abdelbaki 6d27c189f3 feat(modules): add openarena, tetris CLI, and doom modules
openarena: open-source Quake III Arena (pacman)
tetris: bastet + vitetris (pacman + AUR)
doom: Chocolate Doom + Freedoom game data (pacman)

Wired up in simple-install.sh, tui-install.sh, and install-modules.sh.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 23:51:33 +02:00
Amir Alexander Abdelbaki 33d2fe7715 fix(installer): replace nmtui with iwctl instructions in network check
nmtui is not available on the archiso live environment; direct users to
iwctl (WiFi) or ethernet instead, and pause for input before re-checking.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 23:47:36 +02:00
10 changed files with 88 additions and 9 deletions

View File

@ -106,8 +106,11 @@ if ! ping -c1 -W3 1.1.1.1 &>/dev/null; then
if $AF_MODE; then
echo "Warning: no internet connection detected — continuing in answerfile mode."
else
echo "No internet connection detected. Launching nmtui..."
nmtui
echo "No internet connection detected."
echo " Wired: ensure the cable is plugged in."
echo " WiFi: switch to another TTY (Alt+F2) and run: iwctl"
echo ""
read -rp "Press Enter once connected (or Ctrl+C to abort)..."
if ! ping -c1 -W3 1.1.1.1 &>/dev/null; then
echo "Warning: still offline. Packages cannot be downloaded without network."
read -rp "Continue anyway? [y/N]: " _net_ans

View File

@ -104,8 +104,11 @@ if ! ping -c1 -W3 1.1.1.1 &>/dev/null; then
if $AF_MODE; then
echo "Warning: no internet connection detected — continuing in answerfile mode."
else
echo "No internet connection detected. Launching nmtui..."
nmtui
echo "No internet connection detected."
echo " Wired: ensure the cable is plugged in."
echo " WiFi: switch to another TTY (Alt+F2) and run: iwctl"
echo ""
read -rp "Press Enter once connected (or Ctrl+C to abort)..."
if ! ping -c1 -W3 1.1.1.1 &>/dev/null; then
echo "Warning: still offline. Packages cannot be downloaded without network."
read -rp "Continue anyway? [y/N]: " _net_ans

View File

@ -116,6 +116,11 @@ count_steps() {
[[ "$sel" == *"spotify"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$sel" == *"prism"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$sel" == *"vintagestory"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$sel" == *"openarena"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$sel" == *"tetris"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$sel" == *"doom"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$sel" == *"sauerbraten"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$sel" == *"stuntrally"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$sel" == *"localsend"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$sel" == *"croc"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$sel" == *"onlyoffice"* ]] && TOTAL=$(( TOTAL + 1 ))
@ -201,6 +206,11 @@ SELECTED=$(dialog --backtitle "$BACKTITLE" \
"spotify" "Spotify launcher + Spicetify theming" off \
"prism" "PrismLauncher Minecraft launcher (Flatpak)" off \
"vintagestory" "Vintage Story survival game (AUR)" off \
"openarena" "OpenArena open-source Quake III Arena" off \
"tetris" "Tetris CLI bastet · vitetris" off \
"doom" "Doom Chocolate Doom + Freedoom data" off \
"sauerbraten" "Sauerbraten open-source FPS (Cube 2)" off \
"stuntrally" "Stunt Rally rally racing game (Flatpak)" off \
"localsend" "LocalSend LAN file transfer (AUR)" off \
"croc" "croc cross-platform file transfer" off \
"onlyoffice" "OnlyOffice office suite (AUR)" off \
@ -266,6 +276,11 @@ SUMMARY=""
[[ "$SELECTED" == *"spotify"* ]] && SUMMARY+=" ✦ Spotify\n"
[[ "$SELECTED" == *"prism"* ]] && SUMMARY+=" ✦ PrismLauncher\n"
[[ "$SELECTED" == *"vintagestory"* ]] && SUMMARY+=" ✦ Vintage Story\n"
[[ "$SELECTED" == *"openarena"* ]] && SUMMARY+=" ✦ OpenArena\n"
[[ "$SELECTED" == *"tetris"* ]] && SUMMARY+=" ✦ Tetris CLI (bastet · vitetris)\n"
[[ "$SELECTED" == *"doom"* ]] && SUMMARY+=" ✦ Doom\n"
[[ "$SELECTED" == *"sauerbraten"* ]] && SUMMARY+=" ✦ Sauerbraten\n"
[[ "$SELECTED" == *"stuntrally"* ]] && SUMMARY+=" ✦ Stunt Rally\n"
[[ "$SELECTED" == *"localsend"* ]] && SUMMARY+=" ✦ LocalSend\n"
[[ "$SELECTED" == *"croc"* ]] && SUMMARY+=" ✦ croc\n"
[[ "$SELECTED" == *"onlyoffice"* ]] && SUMMARY+=" ✦ OnlyOffice\n"
@ -333,6 +348,11 @@ DE_DIR="$MODULES/Desktop-Environments"
[[ "$SELECTED" == *"spotify"* ]] && run_module "Spotify" "$APPS/spotify.sh"
[[ "$SELECTED" == *"prism"* ]] && run_module "PrismLauncher" "$APPS/prismlauncher.sh"
[[ "$SELECTED" == *"vintagestory"* ]] && run_module "Vintage Story" "$APPS/vintagestory.sh"
[[ "$SELECTED" == *"openarena"* ]] && run_module "OpenArena" "$APPS/openarena.sh"
[[ "$SELECTED" == *"tetris"* ]] && run_module "Tetris CLI" "$APPS/tetris.sh"
[[ "$SELECTED" == *"doom"* ]] && run_module "Doom" "$APPS/doom.sh"
[[ "$SELECTED" == *"sauerbraten"* ]] && run_module "Sauerbraten" "$APPS/sauerbraten.sh"
[[ "$SELECTED" == *"stuntrally"* ]] && run_module "Stunt Rally" "$APPS/stuntrally.sh"
[[ "$SELECTED" == *"localsend"* ]] && run_module "LocalSend" "$APPS/localsend.sh"
[[ "$SELECTED" == *"croc"* ]] && run_module "croc" "$APPS/croc.sh"
[[ "$SELECTED" == *"onlyoffice"* ]] && run_module "OnlyOffice" "$APPS/onlyoffice.sh"

View File

@ -0,0 +1,5 @@
#!/bin/bash
set -euo pipefail
# chocolate-doom: faithful vanilla Doom port; freedoom: free game data (playable without IWADs)
sudo pacman -S --noconfirm --needed chocolate-doom freedoom

View File

@ -0,0 +1,3 @@
#!/bin/bash
set -euo pipefail
sudo pacman -S --noconfirm --needed openarena

View File

@ -0,0 +1,3 @@
#!/bin/bash
set -euo pipefail
sudo pacman -S --noconfirm --needed sauerbraten

View File

@ -0,0 +1,3 @@
#!/bin/bash
set -euo pipefail
flatpak install -y flathub io.github.stuntrally.StuntRally3

View File

@ -0,0 +1,6 @@
#!/bin/bash
set -euo pipefail
sudo pacman -S --noconfirm --needed bastet
yay -S --answerdiff None --answerclean All --noconfirm vitetris

View File

@ -325,6 +325,11 @@ count_steps() {
[[ "$a" == *"spotify"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"prism"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"vintagestory"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"openarena"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"tetris"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"doom"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"sauerbraten"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"stuntrally"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"localsend"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"croc"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"onlyoffice"* ]] && TOTAL=$(( TOTAL + 1 ))
@ -404,8 +409,7 @@ if ! ping -c1 -W3 archlinux.org &>/dev/null; then
printf "Warning: no internet connection detected.\n" | tee -a "$LOG"
else
tui_msg " No Network Detected " \
" No internet connection found.\n\n nmtui will open so you can configure networking.\n Close nmtui when done to continue the installer."
nmtui
" No internet connection found.\n\n Wired: ensure the cable is plugged in.\n WiFi: switch to another TTY (Alt+F2) and run: iwctl\n\n Press Enter here once connected."
if ! ping -c1 -W3 archlinux.org &>/dev/null; then
tui_yesno " Still Offline " \
" Still no internet connection.\n\n Packages cannot be downloaded without network access.\n\n Continue anyway?" \
@ -510,6 +514,11 @@ else
"spotify" "Spotify launcher + Spicetify theming" off \
"prism" "PrismLauncher Minecraft launcher (Flatpak)" off \
"vintagestory" "Vintage Story survival game (AUR)" off \
"openarena" "OpenArena open-source Quake III Arena" off \
"tetris" "Tetris CLI bastet · vitetris" off \
"doom" "Doom Chocolate Doom + Freedoom data" off \
"sauerbraten" "Sauerbraten open-source FPS (Cube 2)" off \
"stuntrally" "Stunt Rally rally racing game (Flatpak)" off \
\
"" "File Transfer & Office" header \
"localsend" "LocalSend LAN file transfer (AUR)" off \
@ -590,7 +599,7 @@ if ! $ANSWERFILE_MODE; then
for _app in ollama llama-cpp open-webui claude networking-cli disk-recovery \
himalaya gnuplot blender-povray toot db-clients mysql productivity \
yt-dlp sox imagemagick ffmpeg localtunnel butter tlp steam vesktop \
spotify prism vintagestory localsend croc onlyoffice \
spotify prism vintagestory openarena tetris doom sauerbraten stuntrally localsend croc onlyoffice \
gimp inkscape krita xournal ardour audacity lmms mixxx cecilia \
kdenlive openshot shotcut \
anti-malware timeshift wireshark k8s \
@ -654,6 +663,11 @@ fi
[[ "$SELECTED_APPS" == *"spotify"* ]] && run_module "Spotify" "$APPS/spotify.sh"
[[ "$SELECTED_APPS" == *"prism"* ]] && run_module "PrismLauncher" "$APPS/prismlauncher.sh"
[[ "$SELECTED_APPS" == *"vintagestory"* ]] && run_module "Vintage Story" "$APPS/vintagestory.sh"
[[ "$SELECTED_APPS" == *"openarena"* ]] && run_module "OpenArena" "$APPS/openarena.sh"
[[ "$SELECTED_APPS" == *"tetris"* ]] && run_module "Tetris CLI" "$APPS/tetris.sh"
[[ "$SELECTED_APPS" == *"doom"* ]] && run_module "Doom" "$APPS/doom.sh"
[[ "$SELECTED_APPS" == *"sauerbraten"* ]] && run_module "Sauerbraten" "$APPS/sauerbraten.sh"
[[ "$SELECTED_APPS" == *"stuntrally"* ]] && run_module "Stunt Rally" "$APPS/stuntrally.sh"
[[ "$SELECTED_APPS" == *"localsend"* ]] && run_module "LocalSend" "$APPS/localsend.sh"
[[ "$SELECTED_APPS" == *"croc"* ]] && run_module "croc" "$APPS/croc.sh"
[[ "$SELECTED_APPS" == *"onlyoffice"* ]] && run_module "OnlyOffice" "$APPS/onlyoffice.sh"

View File

@ -137,6 +137,11 @@ count_steps() {
[[ "$a" == *"spotify"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"prism"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"vintagestory"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"openarena"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"tetris"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"doom"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"sauerbraten"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"stuntrally"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"localsend"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"croc"* ]] && TOTAL=$(( TOTAL + 1 ))
[[ "$a" == *"onlyoffice"* ]] && TOTAL=$(( TOTAL + 1 ))
@ -231,8 +236,7 @@ if ! ping -c1 -W3 archlinux.org &>/dev/null; then
else
dialog --backtitle "$BACKTITLE" \
--title " No Network Detected " \
--msgbox "\n No internet connection found.\n\n nmtui will open so you can configure networking.\n Close nmtui when done to continue the installer.\n" 11 58
nmtui
--msgbox "\n No internet connection found.\n\n Wired: ensure the cable is plugged in.\n WiFi: switch to another TTY (Alt+F2)\n and run: iwctl\n\n Press OK once connected.\n" 13 58
if ! ping -c1 -W3 archlinux.org &>/dev/null; then
dialog --backtitle "$BACKTITLE" \
--title " Still Offline " \
@ -349,6 +353,11 @@ else
"spotify" "Spotify launcher + Spicetify theming" off \
"prism" "PrismLauncher Minecraft launcher (Flatpak)" off \
"vintagestory" "Vintage Story survival game (AUR)" off \
"openarena" "OpenArena open-source Quake III Arena" off \
"tetris" "Tetris CLI bastet · vitetris" off \
"doom" "Doom Chocolate Doom + Freedoom data" off \
"sauerbraten" "Sauerbraten open-source FPS (Cube 2)" off \
"stuntrally" "Stunt Rally rally racing game (Flatpak)" off \
"localsend" "LocalSend LAN file transfer (AUR)" off \
"croc" "croc cross-platform file transfer" off \
"onlyoffice" "OnlyOffice office suite (AUR)" off \
@ -435,6 +444,11 @@ if ! $ANSWERFILE_MODE; then
[[ "$SELECTED_APPS" == *"spotify"* ]] && SUMMARY+=" ✦ Spotify + Spicetify\n"
[[ "$SELECTED_APPS" == *"prism"* ]] && SUMMARY+=" ✦ PrismLauncher\n"
[[ "$SELECTED_APPS" == *"vintagestory"* ]] && SUMMARY+=" ✦ Vintage Story\n"
[[ "$SELECTED_APPS" == *"openarena"* ]] && SUMMARY+=" ✦ OpenArena\n"
[[ "$SELECTED_APPS" == *"tetris"* ]] && SUMMARY+=" ✦ Tetris CLI (bastet · vitetris)\n"
[[ "$SELECTED_APPS" == *"doom"* ]] && SUMMARY+=" ✦ Doom\n"
[[ "$SELECTED_APPS" == *"sauerbraten"* ]] && SUMMARY+=" ✦ Sauerbraten\n"
[[ "$SELECTED_APPS" == *"stuntrally"* ]] && SUMMARY+=" ✦ Stunt Rally\n"
[[ "$SELECTED_APPS" == *"localsend"* ]] && SUMMARY+=" ✦ LocalSend\n"
[[ "$SELECTED_APPS" == *"croc"* ]] && SUMMARY+=" ✦ croc\n"
[[ "$SELECTED_APPS" == *"onlyoffice"* ]] && SUMMARY+=" ✦ OnlyOffice\n"
@ -534,6 +548,11 @@ fi
[[ "$SELECTED_APPS" == *"spotify"* ]] && run_module "Spotify" "$APPS/spotify.sh"
[[ "$SELECTED_APPS" == *"prism"* ]] && run_module "PrismLauncher" "$APPS/prismlauncher.sh"
[[ "$SELECTED_APPS" == *"vintagestory"* ]] && run_module "Vintage Story" "$APPS/vintagestory.sh"
[[ "$SELECTED_APPS" == *"openarena"* ]] && run_module "OpenArena" "$APPS/openarena.sh"
[[ "$SELECTED_APPS" == *"tetris"* ]] && run_module "Tetris CLI" "$APPS/tetris.sh"
[[ "$SELECTED_APPS" == *"doom"* ]] && run_module "Doom" "$APPS/doom.sh"
[[ "$SELECTED_APPS" == *"sauerbraten"* ]] && run_module "Sauerbraten" "$APPS/sauerbraten.sh"
[[ "$SELECTED_APPS" == *"stuntrally"* ]] && run_module "Stunt Rally" "$APPS/stuntrally.sh"
[[ "$SELECTED_APPS" == *"localsend"* ]] && run_module "LocalSend" "$APPS/localsend.sh"
[[ "$SELECTED_APPS" == *"croc"* ]] && run_module "croc" "$APPS/croc.sh"
[[ "$SELECTED_APPS" == *"onlyoffice"* ]] && run_module "OnlyOffice" "$APPS/onlyoffice.sh"