Latest fixes for x86_64 installer. Updated README for Pi images.

This commit is contained in:
Storm Dragon
2026-06-21 12:56:38 -04:00
parent 46e3f0d084
commit 4aeff109f7
2 changed files with 13 additions and 76 deletions
+1 -1
View File
@@ -45,7 +45,7 @@ If the build is interrupted, run `sudo umount -R /mnt && sudo losetup -D` to be
## Customizing the Image
- **Overlay files**: Add or edit files in `pi4/files/` using the same paths they should have inside the Pi. Example: to add a custom MOTD, edit `pi4/files/etc/motd`.
- **Packages**: Edit the package list inside `pi4/build/build-stormux.sh` (search for `pacman -Su --needed`). Add or remove entries as needed, then rebuild.
- **AUR components**: The script already compiles Fenrir (`fenrir-git`), `growpartfs`, `log2ram`, and `yay`. To add more AUR packages, append them to the `aurPackages` array near the middle of the script.
- **Package sources**: The build does not fetch or compile packages from the AUR. Packages are installed from the official Arch Linux ARM repositories or the Stormux repository. The finished image includes `yay`, but it is installed as a prebuilt package from the Stormux repository and is not used during the build.
- **First-boot behavior**: Modify `pi4/files/usr/local/bin/configure-stormux` to change the guided setup that runs when the image boots the first time.
Remember to keep permissions sensible (`chmod 755` for scripts, `644` for configs) so rsync copies them correctly.
+12 -75
View File
@@ -18,7 +18,7 @@ rootPassword=""
declare -a userNames=()
declare -a userPasswords=()
declare -a userIsAdmin=()
desktopEnvironment="" # "none", "i3", "mate"
desktopEnvironment="" # "none", "i3"
hasDesktop=false # true if a desktop environment is selected
timezone=""
enableSsh="no" # "yes" or "no"
@@ -1088,7 +1088,7 @@ gather_system_info() {
# Desktop environment
echo "Select desktop environment:"
local desktops=("Console only (Fenrir screen reader)" "i3 (tiling window manager)" "MATE (traditional desktop)")
local desktops=("Console only (Fenrir screen reader)" "I38 (accessible i3 desktop)")
PS3="Enter desktop number: "
COLUMNS=1
@@ -1100,16 +1100,10 @@ gather_system_info() {
log_info "Desktop environment: none"
break
;;
"i3"*)
"I38"*)
desktopEnvironment="i3"
hasDesktop=true
log_info "Desktop environment: i3"
break
;;
"MATE"*)
desktopEnvironment="mate"
hasDesktop=true
log_info "Desktop environment: mate"
log_info "Desktop environment: I38"
break
;;
esac
@@ -1209,7 +1203,11 @@ gather_system_info() {
echo "Configuration summary:"
echo " Hostname: $hostname"
echo " Users: ${userNames[*]}"
echo " Desktop: $desktopEnvironment"
if [[ "$desktopEnvironment" == "i3" ]]; then
echo " Desktop: I38"
else
echo " Desktop: $desktopEnvironment"
fi
echo " SSH enabled: $enableSsh"
echo " Timezone: $timezone"
echo ""
@@ -1346,9 +1344,6 @@ install_base_system() {
allPackages+=(python-gobject python-pillow python-pytesseract scrot tesseract)
allPackages+=(tesseract-data-eng udiskie xorg-setxkbmap xdotool)
;;
mate)
allPackages+=(mate mate-extra orca python-psutil)
;;
esac
fi
@@ -1742,75 +1737,17 @@ fi
# Run I38 setup scripts as the user
# -x generates xinitrc and xprofile
# Main script generates i3 config with accessibility features
play -qnV0 synth 3 pluck D3 pluck A3 pluck D4 pluck F4 pluck A4 delay 0 .1 .2 .3 .4 remix - chorus 0.9 0.9 38 0.75 0.3 0.5 -t 2>/dev/null || true
if ! sudo -u \$firstUser ./i38.sh -x; then
echo "WARNING: I38 xinit/xprofile setup reported an error"
fi
play -qnV0 synth 3 pluck D3 pluck A3 pluck D4 pluck F4 pluck A4 delay 0 .1 .2 .3 .4 remix - chorus 0.9 0.9 38 0.75 0.3 0.5 -t 2>/dev/null || true
if ! sudo -u \$firstUser ./i38.sh; then
echo "WARNING: I38 main setup reported an error"
fi
cd - > /dev/null || exit 1
fi
elif [[ "${desktopEnvironment}" == "mate" ]]; then
firstUser="${userNames[0]}"
# Create .xinitrc for MATE
cat > /home/\$firstUser/.xinitrc <<'XINITRC_MATE_EOF'
#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)
[[ -f ~/.Xresources ]] && xrdb -merge -I\$HOME ~/.Xresources
if [ -d /etc/X11/xinit/xinitrc.d ]; then
for f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "\$f" ] && . "\$f"
done
unset f
fi
[ -f /etc/xprofile ] && . /etc/xprofile
[ -f ~/.xprofile ] && . ~/.xprofile
exec dbus-run-session -- mate-session
XINITRC_MATE_EOF
chmod 755 /home/\$firstUser/.xinitrc
chown \$firstUser:users /home/\$firstUser/.xinitrc
# Create .xprofile for MATE with accessibility variables
cat > /home/\$firstUser/.xprofile <<'XPROFILE_MATE_EOF'
# Accessibility variables
export ACCESSIBILITY_ENABLED=1
export CHROME_FLAGS="--force-renderer-accessibility"
export GTK_MODULES=gail:atk-bridge
export GNOME_ACCESSIBILITY=1
export QT_ACCESSIBILITY=1
export QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
export SAL_USE_VCLPLUGIN=gtk3
# Enable Orca screen reader
if ! gsettings set org.gnome.desktop.a11y.applications screen-reader-enabled true; then
echo "WARNING: Could not set GNOME screen-reader-enabled flag"
fi
if ! gsettings set org.mate.interface accessibility true; then
echo "WARNING: Could not set MATE accessibility flag"
fi
if ! gsettings set org.mate.applications-at-visual startup true; then
echo "WARNING: Could not set MATE startup applications accessibility flag"
fi
XPROFILE_MATE_EOF
chmod 755 /home/\$firstUser/.xprofile
chown \$firstUser:users /home/\$firstUser/.xprofile
# Configure speech-dispatcher for MATE
if [[ ! -d /home/\$firstUser/.config/speech-dispatcher ]]; then
if ! sudo -u \$firstUser spd-conf -n; then
echo "WARNING: Failed to initialize speech-dispatcher configuration for \$firstUser"
fi
fi
fi
# Initialize pacman keyring
pacman-key --init
@@ -1846,7 +1783,7 @@ fi
$pipewireConfigCmd
# Configure nodm for automatic login (only after nodm package is installed)
if [[ "${desktopEnvironment}" == "i3" ]] || [[ "${desktopEnvironment}" == "mate" ]]; then
if [[ "${desktopEnvironment}" == "i3" ]]; then
if [[ -f /etc/nodm.conf ]]; then
sed -i "s/{user}/${autoLoginUser}/g" /etc/nodm.conf
systemctl enable nodm.service