185 lines
4.0 KiB
Bash
Executable File
185 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Helpers
|
|
get_aur_helper() {
|
|
if is_installed paru; then
|
|
echo "paru"
|
|
elif is_installed yay; then
|
|
echo "yay"
|
|
fi
|
|
}
|
|
|
|
is_installed() {
|
|
if pacman -Qi $1 &> /dev/null; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
is_pkg() {
|
|
if "$1" -Si "$2" &>/dev/null; then
|
|
return 0
|
|
else
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
is_aur_pkg() {
|
|
helper=$(get_aur_helper)
|
|
if [ -z $helper ]; then
|
|
return 1
|
|
fi
|
|
|
|
return $(is_pkg $helper $1)
|
|
}
|
|
|
|
is_arch_pkg() {
|
|
return $(is_pkg pacman $1)
|
|
}
|
|
|
|
install() {
|
|
if is_installed "$1"; then
|
|
return 0
|
|
fi
|
|
|
|
if is_arch_pkg "$1"; then
|
|
sudo pacman -S $1
|
|
elif is_aur_pkg "$1"; then
|
|
sudo $(get_aur_helper) -S $1
|
|
else
|
|
echo "error: unknown package [$1]"
|
|
fi
|
|
}
|
|
|
|
# Banner
|
|
cat << "EOF"
|
|
________ __ .___ __ .__ .__
|
|
\______ \ _____/ |_ ______ | | ____ _______/ |______ | | | | ___________
|
|
| | \ / _ \ __\/ ___/ | |/ \ / ___/\ __\__ \ | | | | _/ __ \_ __ \
|
|
| ` ( <_> ) | \___ \ | | | \\___ \ | | / __ \| |_| |_\ ___/| | \/
|
|
/_______ /\____/|__| /____ > |___|___| /____ > |__| (____ /____/____/\___ >__|
|
|
\/ \/ \/ \/ \/ \/
|
|
EOF
|
|
|
|
# Vars
|
|
script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd)"
|
|
clone_dir="$HOME/git/"
|
|
|
|
# Change working directory
|
|
cd $script_dir
|
|
echo "Working directory: $(pwd)"
|
|
|
|
# Dependencies
|
|
echo ""
|
|
echo "Installing dependencies..."
|
|
install git
|
|
install base-devel
|
|
echo "Dependencies installed!"
|
|
|
|
# AUR helper
|
|
if ! (is_installed paru || is_installed yay); then
|
|
echo ""
|
|
echo "Installing AUR helper..."
|
|
echo -e "AUR helper:\n1) paru\n2) yay"
|
|
read -p "Enter your preference (default=1): " helper
|
|
|
|
case $helper in
|
|
1) helper="paru" ;;
|
|
2) helper="yay" ;;
|
|
*) helper="paru" ;;
|
|
esac
|
|
|
|
if [ -d $clone_dir ]; then
|
|
rm -rf $clone_dir$helper
|
|
else
|
|
mkdir $clone_dir
|
|
fi
|
|
|
|
echo "Installing $helper..."
|
|
cd $clone_dir
|
|
git clone https://aur.archlinux.org/$helper.git
|
|
cd $helper
|
|
makepkg -si
|
|
cd $script_dir
|
|
echo "AUR helper installed!"
|
|
else
|
|
helper=$(get_aur_helper)
|
|
fi
|
|
|
|
# Install packages
|
|
echo ""
|
|
echo "Installing packages..."
|
|
|
|
for pkg_file in *.pkgs; do
|
|
[ -f "$pkg_file" ] || continue
|
|
echo "Found package file: $pkg_file"
|
|
read -p "Do you want to install the packages from this file(Y/n)?" inst
|
|
|
|
if [ "$inst" == "n" ]; then
|
|
continue
|
|
fi
|
|
|
|
while IFS= read -r pkg; do
|
|
if [[ $pkg = \#* ]] || [ -z "$pkg" ]; then
|
|
continue
|
|
fi
|
|
|
|
if is_installed $pkg; then
|
|
echo "info: package already installed, ignoring [$pkg]"
|
|
elif is_arch_pkg $pkg; then
|
|
arch_pkgs="${arch_pkgs} $pkg"
|
|
elif is_aur_pkg $pkg; then
|
|
aur_pkgs="${aur_pkgs} $pkg"
|
|
else
|
|
echo "error: unknown package [$pkg]"
|
|
fi
|
|
done < $pkg_file
|
|
done
|
|
|
|
echo ""
|
|
echo "Installing arch packages..."
|
|
if [ ! -z "$arch_pkgs" ]; then
|
|
sudo pacman -Sy $arch_pkgs
|
|
fi
|
|
|
|
echo ""
|
|
echo "Installing AUR packages..."
|
|
if [ ! -z "$aur_pkgs" ]; then
|
|
$helper -Sy $aur_pkgs
|
|
fi
|
|
|
|
# Install minegrub
|
|
read -p "Install grub theme 'minegrub'(Y/n)?" inst
|
|
|
|
if [ "$inst" != "n" ]; then
|
|
git clone https://github.com/Lxtharia/minegrub-theme.git
|
|
cd ./minegrub-theme
|
|
sudo cp -ruv ./minegrub /boot/grub/themes/
|
|
sed -i '/^\(#\)\?GRUB_THEME/ s/.*/GRUB_THEME=XXX/' /etc/default/grub
|
|
sudo grub-mkconfig -o /boot/grub/grub.cfg
|
|
cd ..
|
|
fi
|
|
|
|
# TODO mic-indicator, nerd font
|
|
echo "Packages installed!"
|
|
|
|
# Apply default configs
|
|
if [ "$1" != "nc" ]; then
|
|
echo ""
|
|
echo "Copying configs..."
|
|
cp -r -f .config/. ~/.config/
|
|
cp -r -f home/. ~/
|
|
sudo cp -r -f etc/. /etc/
|
|
echo "Configs copied!"
|
|
fi
|
|
|
|
#TODO Set theme
|
|
|
|
#TODO Enable services
|
|
# cups (is_isnstalled $pkg -> ask? -> enable)
|
|
# bluetooth
|
|
# sddm
|
|
|
|
echo "Finished!"
|