posix formatting with shfmt

This commit is contained in:
Dejan Kutle 2022-07-05 20:02:28 +02:00
parent 846d2fb7ad
commit e2eb921348
No known key found for this signature in database
GPG Key ID: 909D771047A9F6D8

101
larbs.sh
View File

@ -57,14 +57,17 @@ usercheck() {
preinstallmsg() { preinstallmsg() {
whiptail --title "Let's get this party started!" --yes-button "Let's go!" \ whiptail --title "Let's get this party started!" --yes-button "Let's go!" \
--no-button "No, nevermind!" \ --no-button "No, nevermind!" \
--yesno "The rest of the installation will now be totally automated, so you can sit back and relax.\\n\\nIt will take some time, but when done, you can relax even more with your complete system.\\n\\nNow just press <Let's go!> and the system will begin installation!" 13 60 || { clear; exit 1; } --yesno "The rest of the installation will now be totally automated, so you can sit back and relax.\\n\\nIt will take some time, but when done, you can relax even more with your complete system.\\n\\nNow just press <Let's go!> and the system will begin installation!" 13 60 || {
clear
exit 1
}
} }
adduserandpass() { adduserandpass() {
# Adds user `$name` with password $pass1. # Adds user `$name` with password $pass1.
whiptail --infobox "Adding user \"$name\"..." 7 50 whiptail --infobox "Adding user \"$name\"..." 7 50
useradd -m -g wheel -s /bin/zsh "$name" >/dev/null 2>&1 \ useradd -m -g wheel -s /bin/zsh "$name" >/dev/null 2>&1 ||
|| usermod -a -G wheel "$name" && mkdir -p /home/"$name" && chown "$name":wheel /home/"$name" usermod -a -G wheel "$name" && mkdir -p /home/"$name" && chown "$name":wheel /home/"$name"
export repodir="/home/$name/.local/src" export repodir="/home/$name/.local/src"
mkdir -p "$repodir" mkdir -p "$repodir"
chown -R "$name":wheel "$(dirname "$repodir")" chown -R "$name":wheel "$(dirname "$repodir")"
@ -74,32 +77,32 @@ adduserandpass() {
refreshkeys() { refreshkeys() {
case "$(readlink -f /sbin/init)" in case "$(readlink -f /sbin/init)" in
*systemd* ) *systemd*)
whiptail --infobox "Refreshing Arch Keyring..." 7 40 whiptail --infobox "Refreshing Arch Keyring..." 7 40
pacman --noconfirm -S archlinux-keyring >/dev/null 2>&1 pacman --noconfirm -S archlinux-keyring >/dev/null 2>&1
;; ;;
*) *)
whiptail --infobox "Enabling Arch Repositories..." 7 40 whiptail --infobox "Enabling Arch Repositories..." 7 40
if ! grep -q "^\[universe\]" /etc/pacman.conf; then if ! grep -q "^\[universe\]" /etc/pacman.conf; then
echo "[universe] echo "[universe]
Server = https://universe.artixlinux.org/\$arch Server = https://universe.artixlinux.org/\$arch
Server = https://mirror1.artixlinux.org/universe/\$arch Server = https://mirror1.artixlinux.org/universe/\$arch
Server = https://mirror.pascalpuffke.de/artix-universe/\$arch Server = https://mirror.pascalpuffke.de/artix-universe/\$arch
Server = https://artixlinux.qontinuum.space/artixlinux/universe/os/\$arch Server = https://artixlinux.qontinuum.space/artixlinux/universe/os/\$arch
Server = https://mirror1.cl.netactuate.com/artix/universe/\$arch Server = https://mirror1.cl.netactuate.com/artix/universe/\$arch
Server = https://ftp.crifo.org/artix-universe/" >> /etc/pacman.conf Server = https://ftp.crifo.org/artix-universe/" >>/etc/pacman.conf
pacman -Sy pacman -Sy
fi fi
pacman --noconfirm --needed -S \ pacman --noconfirm --needed -S \
artix-keyring artix-archlinux-support >/dev/null 2>&1 artix-keyring artix-archlinux-support >/dev/null 2>&1
for repo in extra community; do for repo in extra community; do
grep -q "^\[$repo\]" /etc/pacman.conf || grep -q "^\[$repo\]" /etc/pacman.conf ||
echo "[$repo] echo "[$repo]
Include = /etc/pacman.d/mirrorlist-arch" >> /etc/pacman.conf Include = /etc/pacman.d/mirrorlist-arch" >>/etc/pacman.conf
done done
pacman -Sy >/dev/null 2>&1 pacman -Sy >/dev/null 2>&1
pacman-key --populate archlinux >/dev/null 2>&1 pacman-key --populate archlinux >/dev/null 2>&1
;; ;;
esac esac
} }
@ -110,7 +113,10 @@ manualinstall() {
sudo -u "$name" mkdir -p "$repodir/$1" sudo -u "$name" mkdir -p "$repodir/$1"
sudo -u "$name" git -C "$repodir" clone --depth 1 --single-branch \ sudo -u "$name" git -C "$repodir" clone --depth 1 --single-branch \
--no-tags -q "https://aur.archlinux.org/$1.git" "$repodir/$1" || --no-tags -q "https://aur.archlinux.org/$1.git" "$repodir/$1" ||
{ cd "$repodir/$1" || return 1 ; sudo -u "$name" git pull --force origin master ;} {
cd "$repodir/$1" || return 1
sudo -u "$name" git pull --force origin master
}
cd "$repodir/$1" || exit 1 cd "$repodir/$1" || exit 1
sudo -u "$name" -D "$repodir/$1" \ sudo -u "$name" -D "$repodir/$1" \
makepkg --noconfirm -si >/dev/null 2>&1 || return 1 makepkg --noconfirm -si >/dev/null 2>&1 || return 1
@ -130,7 +136,10 @@ gitmakeinstall() {
--infobox "Installing \`$progname\` ($n of $total) via \`git\` and \`make\`. $(basename "$1") $2" 8 70 --infobox "Installing \`$progname\` ($n of $total) via \`git\` and \`make\`. $(basename "$1") $2" 8 70
sudo -u "$name" git -C "$repodir" clone --depth 1 --single-branch \ sudo -u "$name" git -C "$repodir" clone --depth 1 --single-branch \
--no-tags -q "$1" "$dir" || --no-tags -q "$1" "$dir" ||
{ cd "$dir" || return 1 ; sudo -u "$name" git pull --force origin master ;} {
cd "$dir" || return 1
sudo -u "$name" git pull --force origin master
}
cd "$dir" || exit 1 cd "$dir" || exit 1
make >/dev/null 2>&1 make >/dev/null 2>&1
make install >/dev/null 2>&1 make install >/dev/null 2>&1
@ -152,21 +161,21 @@ pipinstall() {
} }
installationloop() { installationloop() {
([ -f "$progsfile" ] && cp "$progsfile" /tmp/progs.csv) \ ([ -f "$progsfile" ] && cp "$progsfile" /tmp/progs.csv) ||
|| curl -Ls "$progsfile" | sed '/^#/d' > /tmp/progs.csv curl -Ls "$progsfile" | sed '/^#/d' >/tmp/progs.csv
total=$(wc -l < /tmp/progs.csv) total=$(wc -l </tmp/progs.csv)
aurinstalled=$(pacman -Qqm) aurinstalled=$(pacman -Qqm)
while IFS=, read -r tag program comment; do while IFS=, read -r tag program comment; do
n=$((n+1)) n=$((n + 1))
echo "$comment" | grep -q "^\".*\"$" \ echo "$comment" | grep -q "^\".*\"$" &&
&& comment="$(echo "$comment" | sed -E "s/(^\"|\"$)//g")" comment="$(echo "$comment" | sed -E "s/(^\"|\"$)//g")"
case "$tag" in case "$tag" in
"A") aurinstall "$program" "$comment" ;; "A") aurinstall "$program" "$comment" ;;
"G") gitmakeinstall "$program" "$comment" ;; "G") gitmakeinstall "$program" "$comment" ;;
"P") pipinstall "$program" "$comment" ;; "P") pipinstall "$program" "$comment" ;;
*) maininstall "$program" "$comment" ;; *) maininstall "$program" "$comment" ;;
esac esac
done < /tmp/progs.csv done </tmp/progs.csv
} }
putgitrepo() { putgitrepo() {
@ -182,7 +191,7 @@ putgitrepo() {
sudo -u "$name" cp -rfT "$dir" "$2" sudo -u "$name" cp -rfT "$dir" "$2"
} }
finalize(){ finalize() {
whiptail --title "All done!" \ whiptail --title "All done!" \
--msgbox "Congrats! Provided there were no hidden errors, the script completed successfully and all the programs and configuration files should be in place.\\n\\nTo run the new graphical environment, log out and log back in as your new user, then run the command \"startx\" to start the graphical environment (it will start automatically in tty1).\\n\\n.t Luke" 13 80 --msgbox "Congrats! Provided there were no hidden errors, the script completed successfully and all the programs and configuration files should be in place.\\n\\nTo run the new graphical environment, log out and log back in as your new user, then run the command \"startx\" to start the graphical environment (it will start automatically in tty1).\\n\\n.t Luke" 13 80
} }
@ -213,7 +222,7 @@ preinstallmsg || error "User exited."
refreshkeys || refreshkeys ||
error "Error automatically refreshing Arch keyring. Consider doing so manually." error "Error automatically refreshing Arch keyring. Consider doing so manually."
for x in curl ca-certificates base-devel git ntp zsh ; do for x in curl ca-certificates base-devel git ntp zsh; do
whiptail --title "LARBS Installation" \ whiptail --title "LARBS Installation" \
--infobox "Installing \`$x\` which is required to install and configure other programs." 8 70 --infobox "Installing \`$x\` which is required to install and configure other programs." 8 70
installpkg "$x" installpkg "$x"
@ -230,7 +239,7 @@ adduserandpass || error "Error adding username and/or password."
# Allow user to run sudo without password. Since AUR programs must be installed # Allow user to run sudo without password. Since AUR programs must be installed
# in a fakeroot environment, this is required for all builds with AUR. # in a fakeroot environment, this is required for all builds with AUR.
trap 'rm -f /etc/sudoers.d/larbs-temp' HUP INT QUIT TERM PWR EXIT trap 'rm -f /etc/sudoers.d/larbs-temp' HUP INT QUIT TERM PWR EXIT
echo "%wheel ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/larbs-temp echo "%wheel ALL=(ALL) NOPASSWD: ALL" >/etc/sudoers.d/larbs-temp
# Make pacman colorful, concurrent downloads and Pacman eye-candy. # Make pacman colorful, concurrent downloads and Pacman eye-candy.
grep -q "ILoveCandy" /etc/pacman.conf || sed -i "/#VerbosePkgLists/a ILoveCandy" /etc/pacman.conf grep -q "ILoveCandy" /etc/pacman.conf || sed -i "/#VerbosePkgLists/a ILoveCandy" /etc/pacman.conf
@ -259,7 +268,7 @@ rm -rf "/home/$name/.git/" "/home/$name/README.md" "/home/$name/LICENSE" "/home/
# Most important command! Get rid of the beep! # Most important command! Get rid of the beep!
rmmod pcspkr rmmod pcspkr
echo "blacklist pcspkr" > /etc/modprobe.d/nobeep.conf echo "blacklist pcspkr" >/etc/modprobe.d/nobeep.conf
# Make zsh the default shell for the user. # Make zsh the default shell for the user.
chsh -s /bin/zsh "$name" >/dev/null 2>&1 chsh -s /bin/zsh "$name" >/dev/null 2>&1
@ -268,10 +277,10 @@ sudo -u "$name" mkdir -p "/home/$name/.config/abook/"
sudo -u "$name" mkdir -p "/home/$name/.config/mpd/playlists/" sudo -u "$name" mkdir -p "/home/$name/.config/mpd/playlists/"
# dbus UUID must be generated for Artix runit. # dbus UUID must be generated for Artix runit.
dbus-uuidgen > /var/lib/dbus/machine-id dbus-uuidgen >/var/lib/dbus/machine-id
# Use system notifications for Brave on Artix # Use system notifications for Brave on Artix
echo "export \$(dbus-launch)" > /etc/profile.d/dbus.sh echo "export \$(dbus-launch)" >/etc/profile.d/dbus.sh
# Enable tap to click # Enable tap to click
[ ! -f /etc/X11/xorg.conf.d/40-libinput.conf ] && printf 'Section "InputClass" [ ! -f /etc/X11/xorg.conf.d/40-libinput.conf ] && printf 'Section "InputClass"
@ -281,12 +290,12 @@ echo "export \$(dbus-launch)" > /etc/profile.d/dbus.sh
Driver "libinput" Driver "libinput"
# Enable left mouse button by tapping # Enable left mouse button by tapping
Option "Tapping" "on" Option "Tapping" "on"
EndSection' > /etc/X11/xorg.conf.d/40-libinput.conf EndSection' >/etc/X11/xorg.conf.d/40-libinput.conf
# Allow wheel users to sudo with password and allow several system commands # Allow wheel users to sudo with password and allow several system commands
# (like `shutdown` to run without password). # (like `shutdown` to run without password).
echo "%wheel ALL=(ALL) ALL #LARBS" > /etc/sudoers.d/larbs-wheel-can-sudo echo "%wheel ALL=(ALL) ALL #LARBS" >/etc/sudoers.d/larbs-wheel-can-sudo
echo "%wheel ALL=(ALL) NOPASSWD: /usr/bin/shutdown,/usr/bin/reboot,/usr/bin/systemctl suspend,/usr/bin/wifi-menu,/usr/bin/mount,/usr/bin/umount,/usr/bin/pacman -Syu,/usr/bin/pacman -Syyu,/usr/bin/pacman -Syyu --noconfirm,/usr/bin/loadkeys,/usr/bin/paru,/usr/bin/pacman -Syyuw --noconfirm" > /etc/sudoers.d/larbs-cmds-without-password echo "%wheel ALL=(ALL) NOPASSWD: /usr/bin/shutdown,/usr/bin/reboot,/usr/bin/systemctl suspend,/usr/bin/wifi-menu,/usr/bin/mount,/usr/bin/umount,/usr/bin/pacman -Syu,/usr/bin/pacman -Syyu,/usr/bin/pacman -Syyu --noconfirm,/usr/bin/loadkeys,/usr/bin/paru,/usr/bin/pacman -Syyuw --noconfirm" >/etc/sudoers.d/larbs-cmds-without-password
# Last message! Install complete! # Last message! Install complete!
finalize finalize