installer/installer.sh
2025-04-24 23:00:20 -06:00

99 lines
2.4 KiB
Bash
Executable file

#!/bin/sh
dotfiles="https://git.amolinae.com/amolinae06/dotfiles.git"
software="software.csv"
devsoftware=""
apk_install(){
echo "installing $1"; apk add "$1" >/dev/null 2>&1
}
git_install(){
echo "cloning from $1"; su - "$user" -c "cd ~/.local/src && git clone \"$1\"" >/dev/null 2>&1
}
deploy_dotfiles(){
printf "Deploying dotfiles..."
su - $user -c "git clone $dotfiles && cd dotfiles && rm -rf .git README.md && cp -r .* $HOME && cd && rm -rf dotfiles"
}
read_software(){
tail -n +2 "$software" | sed -E ':a; s/("[^"]*),([^"]*")/\1\2/; ta' | while IFS=',' read -r NAME DESCRIPTION GIT GIT_URL; do
case "$GIT" in
"N") apk_install $NAME ;;
"Y") git_install "$GIT_URL" ;;
*) echo "ERROR: failed to determine $NAME."; exit 1 ;;
esac
done
printf "Successfully installed all software!"
}
setup_greetd(){
printf "Setting up greetd"
cat <<EOF > /etc/greetd/config.toml
[terminal]
vt = 7
[default_session]
command = "tuigreet -t -r --cmd /home/$user/.local/bin/dwmlaunch"
user = "greetd"
EOF
rc-update add greetd default
printf "Finished setting up greetd."
}
setup_shell(){
usermod -s /bin/zsh "$user"
echo "changed "$user"'s shell to zsh"
}
setup_bluetooth(){
printf "Setting up bluetooth"
rc-update add bluetooth default
printf "Done."
}
setup_home(){
su - $user -c "xdg-user-dirs-update && mkdir ~/Documents/Miscellaneous"
}
setup_chroot(){
printf "Setting up chroot"
apk_install curl
cd "/home/$user/Documents/Miscellaneous"
mkdir alpchroot
curl -LO https://dl-cdn.alpinelinux.org/alpine/v3.20/main/x86_64/apk-tools-static-2.14.4-r1.apk
tar -xzf apk-tools-static-*.apk
./sbin/apk.static -X https://dl-cdn.alpinelinux.org/alpine/v3.20/main -U --allow-untrusted -p ${chroot_dir} --initdb add alpine-base
mount -o bind /dev alpchroot/dev
mount -t proc none alpchroot/proc
mount -o bind /sys alpchroot/sys
cp -L /etc/resolv.conf alpchroot/etc/
chown
mkdir -p alpchroot/etc/apk
echo "https://dl-cdn.alpinelinux.org/alpine/latest-stable/main" > alpchroot/etc/apk/repositories
apk del curl
}
check_root(){
if [ "$(id -u)" -ne 0 ]; then
echo "ERROR: you must run this script as root."; exit 1
else
echo "ROOT: OK"
fi
}
get_user(){
printf "Please enter the name of your user: "
read -r user
}
check_root
echo "Welcome to the installer"
apk_install git
get_user
read_software
deploy_dotfiles
setup_greetd
setup_shell
setup_bluetooth