WIP: installer
This commit is contained in:
parent
0821d684a9
commit
2ad168cfe3
2 changed files with 101 additions and 11 deletions
97
installer.sh
97
installer.sh
|
@ -1,10 +1,99 @@
|
|||
#!/bin/sh
|
||||
|
||||
dotfiles="https://git.amolinae.com/amolinae06/dotfiles.git"
|
||||
software="software.csv"
|
||||
devsoftware=""
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]
|
||||
then echo "You must run this script as root"
|
||||
exit 1
|
||||
fi
|
||||
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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue