#!/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 < /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