mirror of
https://github.com/end-4/dots-hyprland.git
synced 2026-06-06 07:19:27 -05:00
117 lines
4.2 KiB
Plaintext
117 lines
4.2 KiB
Plaintext
# 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
|