configure-stormux/configure-stormux.sh

130 lines
4.0 KiB
Bash
Raw Normal View History

2020-06-02 19:20:40 -04:00
#!/bin/bash
# Configure Stormux
# A script to configure the system for new users.
#
# Copyright 2020, Storm Dragon, <storm_dragon@linux-a11y.org>
#
# This is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free
# Software Foundation; either version 3, or (at your option) any later
# version.
#
# This software is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this package; see the file COPYING. If not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
#
#--code--
# Do not run as root.
if [[ "$(whoami)" == "root" ]]; then
echo "Please run configure-stormux as your user, not as root."
exit 0
fi
2023-08-19 10:24:11 -04:00
# For audible sudo prompts:
unset sudoFlags
2023-08-19 10:24:11 -04:00
if [[ -x /etc/audibleprompt.sh ]]; then
export SUDO_ASKPASS=/etc/audibleprompt.sh
export sudoFlags=("-A")
2023-08-19 10:24:11 -04:00
fi
2021-10-18 00:46:11 -04:00
# Include functions common to all operations
source .includes/functions.sh
# Include the dialog based UI
source .includes/ui.sh
# Get architecture
architecture="$(uname -m)"
2020-06-02 19:20:40 -04:00
2021-10-18 00:46:11 -04:00
# Make sure basic xdg directory structure is in place:
if [[ ! -d ~/Desktop ]]; then
xdg-user-dirs-update
2020-06-02 19:20:40 -04:00
fi
# Set up logging
echo -e "\n\n-----> Logging started at $(date '+%A, %B %d, %Y at %I:%M%p')\n" >> "${XDG_CACHE_HOME:-$HOME/.cache}/configure-stormux.log"
exec &> >(/usr/bin/tee -a "${XDG_CACHE_HOME:-$HOME/.cache}/configure-stormux.log")
# Check for possible resize
diskSource="$(df --output='source' / | tail -1)"
2021-10-23 17:23:16 -04:00
diskSize="$(df -h --output='size' / | tail -1 | tr -cd '[:digit:].')"
diskSize=${diskSize%.*}
if [[ $diskSize -le 5 ]]; then
if [[ "$(yesno "$diskSource is only $diskSize gigs, which means it probably needs to be resized. Would you like to do this now?")" == "Yes" ]]; then
2023-08-19 16:59:39 -04:00
sudo "${sudoFlags[@]}" growpartfs $diskSource
fi
fi
2021-10-18 00:46:11 -04:00
while [[ "$choice" != "Exit" ]]; do
case "$choice" in
"Change username")
./.includes/chuser.sh $(inputbox "Please enter the new username, letters, dashes, and underscores only.")
restart
;;
2021-10-23 14:30:23 -04:00
"Configure internet")
/usr/bin/nmtui-connect
;;
2022-04-06 02:14:27 -04:00
"Enable Bluetooth")
sudo "${sudoFlags[@]}" sed -i 's/^#AutoEnable=false$/AutoEnable=true/' /etc/bluetooth/main.conf
sudo "${sudoFlags[@]}" systemctl enable bluetooth --now
2022-04-06 02:14:27 -04:00
;;
"Install Raspberry Pi 5 kernel")
install_package linux-rpi-16k
;;
2021-10-26 13:21:18 -04:00
"Install Lxqt Desktop")
source .includes/gui.sh lxqt
;;
2021-10-18 02:06:41 -04:00
"Install Mate Desktop")
source .includes/gui.sh mate
2021-10-18 02:06:41 -04:00
;;
"Install i3 Windowmanager")
source .includes/gui.sh i3
;;
"Screen reader")
source .includes/screenreader.sh
;;
"Set up gaming")
source .includes/gaming.sh
2021-10-18 02:06:41 -04:00
;;
2022-02-09 05:18:29 -05:00
"Set timezone")
source .includes/timezone.sh
;;
2022-04-10 19:23:48 -04:00
"Get help on IRC")
source .includes/irc.sh
;;
"Update configure-stormux")
sudo "${sudoFlags[@]}" git pull
exit $?
;;
2021-10-18 00:46:11 -04:00
esac
options=(
"Change username"
"Configure internet"
"Enable Bluetooth"
)
if [[ "$(cat /sys/firmware/devicetree/base/model | cut -f-3 -d ' ')" == "Raspberry Pi 5" ]]; then
options+=("Install Raspberry Pi 5 kernel")
fi
options+=("Install Lxqt Desktop"
"Install Mate Desktop"
"Install i3 Windowmanager"
"Screen reader"
)
if [[ "${architecture}" == "armv7l" ]]; then
options+=("Set up gaming")
fi
options+=("Set timezone"
"Get help on IRC"
"Update configure-stormux"
)
choice="$(menulist "${options[@]}")" || break
2021-10-18 00:46:11 -04:00
done
2020-06-02 19:20:40 -04:00
exit 0