Files
illogical-impulse/scriptdata/install-deps-arch.sh
T
2025-10-01 21:49:46 +08:00

117 lines
4.2 KiB
Bash

# This script is meant to be sourced.
# It's not for directly running.
install-yay() {
x sudo pacman -S --needed --noconfirm base-devel
x git clone https://aur.archlinux.org/yay-bin.git /tmp/buildyay
x cd /tmp/buildyay
x makepkg -o
x makepkg -se
x makepkg -i --noconfirm
x cd $base
rm -rf /tmp/buildyay
}
handle-deprecated-dependencies (){
printf "${COLOR_CYAN}[$0]: Removing deprecated dependencies:${COLOR_RESET}\n"
for i in illogical-impulse-{microtex,pymyc-aur,ags,agsv1} {hyprutils,hyprpicker,hyprlang,hypridle,hyprland-qt-support,hyprland-qtutils,hyprlock,xdg-desktop-portal-hyprland,hyprcursor,hyprwayland-scanner,hyprland}-git;do try sudo pacman --noconfirm -Rdd $i;done
# Convert old dependencies to non explicit dependencies so that they can be orphaned if not in meta packages
remove_bashcomments_emptylines ./scriptdata/previous_dependencies.conf ./cache/old_deps_stripped.conf
readarray -t old_deps_list < ./cache/old_deps_stripped.conf
pacman -Qeq > ./cache/pacman_explicit_packages
readarray -t explicitly_installed < ./cache/pacman_explicit_packages
echo "Attempting to set previously explicitly installed deps as implicit..."
for i in "${explicitly_installed[@]}"; do for j in "${old_deps_list[@]}"; do
[ "$i" = "$j" ] && yay -D --asdeps "$i"
done; done
return 0
}
#####################################################################################
if ! command -v pacman >/dev/null 2>&1; then
printf "${COLOR_RED}[$0]: pacman not found, it seems that the system is not ArchLinux or Arch-based distros. Aborting...${COLOR_RESET}\n"
exit 1
fi
# Issue #363
case $SKIP_SYSUPDATE in
true) sleep 0;;
*) v sudo pacman -Syu;;
esac
remove_bashcomments_emptylines ${DEPLISTFILE} ./cache/dependencies_stripped.conf
readarray -t pkglist < ./cache/dependencies_stripped.conf
# Use yay. Because paru does not support cleanbuild.
# Also see https://wiki.hyprland.org/FAQ/#how-do-i-update
if ! command -v yay >/dev/null 2>&1;then
echo -e "${COLOR_YELLOW}[$0]: \"yay\" not found.${COLOR_RESET}"
showfun install-yay
v install-yay
fi
# Install extra packages from dependencies.conf as declared by the user
if (( ${#pkglist[@]} != 0 )); then
if $ask; then
# execute per element of the array $pkglist
for i in "${pkglist[@]}";do v yay -S --needed $i;done
else
# execute for all elements of the array $pkglist in one line
v yay -S --needed --noconfirm ${pkglist[*]}
fi
fi
showfun handle-deprecated-dependencies
v handle-deprecated-dependencies
# https://github.com/end-4/dots-hyprland/issues/581
# yay -Bi is kinda hit or miss, instead cd into the relevant directory and manually source and install deps
install-local-pkgbuild() {
local location=$1
local installflags=$2
x pushd $location
source ./PKGBUILD
x yay -S $installflags --asdeps "${depends[@]}"
x makepkg -Asi --noconfirm
x popd
}
# Install core dependencies from the meta-packages
metapkgs=(./arch-packages/illogical-impulse-{audio,backlight,basic,fonts-themes,kde,portal,python,screencapture,toolkit,widgets})
metapkgs+=(./arch-packages/illogical-impulse-hyprland)
metapkgs+=(./arch-packages/illogical-impulse-microtex-git)
# metapkgs+=(./arch-packages/illogical-impulse-oneui4-icons-git)
[[ -f /usr/share/icons/Bibata-Modern-Classic/index.theme ]] || \
metapkgs+=(./arch-packages/illogical-impulse-bibata-modern-classic-bin)
for i in "${metapkgs[@]}"; do
metainstallflags="--needed"
$ask && showfun install-local-pkgbuild || metainstallflags="$metainstallflags --noconfirm"
v install-local-pkgbuild "$i" "$metainstallflags"
done
## Optional dependencies
if pacman -Qs ^plasma-browser-integration$ ;then SKIP_PLASMAINTG=true;fi
case $SKIP_PLASMAINTG in
true) sleep 0;;
*)
if $ask;then
echo -e "${COLOR_YELLOW}[$0]: NOTE: The size of \"plasma-browser-integration\" is about 600 MiB.${COLOR_RESET}"
echo -e "${COLOR_YELLOW}It is needed if you want playtime of media in Firefox to be shown on the music controls widget.${COLOR_RESET}"
echo -e "${COLOR_YELLOW}Install it? [y/N]${COLOR_RESET}"
read -p "====> " p
else
p=y
fi
case $p in
y) x sudo pacman -S --needed --noconfirm plasma-browser-integration ;;
*) echo "Ok, won't install"
esac
;;
esac