Refactoring repository...
Some checks are pending
Check Conventional Commit / check-commit-message (push) Waiting to run

This commit is contained in:
CELESTIFYX
2025-01-14 19:02:06 +02:00
parent 876fa0988e
commit 08abac9e7d
33171 changed files with 4677 additions and 761 deletions

View File

@@ -0,0 +1,138 @@
#!/bin/bash
set -e
package-exists-fast(){
if compgen -G "/var/lib/pacman/local/$1-*" >/dev/null; then
return 0
else
return 1
fi
}
update_keyrings(){
local packages=("snigdhaos-keyring" "archlinux-keyring" "chaotic-keyring")
if $PACMAN -Qq blackarch-keyring &> /dev/null; then
packages+=("blackarch-keyring")
fi
if [ -n "$(PACMAN -Qu "${packages[@]}" 2>&1)" ]; then
echo -e "Updating Keyrings..."
# shellcheck disable=SC1007
SNAPA_PAC_SKIP=y SKIP_AUTOSNAP= $PACMAN -S --needed --noconfirm "${packages[@]}" || return 0
return 1
fi
return 0
}
install_expect(){
if [ -x /usr/bin/tclsh ] && [ ! -x /usr/bin/expect ]; then
SKIP_AUTOSNAP=1 SNAPA_PAC_SKIP=y $PACMAN -U https://mirror.osbeck.com/archlinux/extra/os/x86_64/expect-5.45.4-4-x86_64.pkg.tar.zst --noconfirm -asdeps
fi
}
pre-update-routines(){
local exit_code=0
update_keyrings || exit_code=2
install_expect
return $exit_code
}
migrate-snigdhaos-repo() {
gawk -i inplace 'BEGIN {
err=1
}
{
if (rm)
{
if ($0 ~ /^ *(Include|Server) *=/)
{
next
}
# Check for empty line
else if ($0 ~ /^ *$/)
{
next
}
else
{
rm=0
}
}
if ($0 == "[options]")
{
print
next
}
else if ($0 == "[snigdhaos-core]")
{
if (set) {
rm=1
next
}
set=1
}
else if ($0 == "[core-testing]")
{
print "[testing]"
err=0
next
}
else if ($0 == "[community-testing]")
{
print "[extra-testing]"
err=0
next
}
else if ($0 == "[community]")
{
rm=1
err=0
next
}
}
/^\[[^ \[\]]+\]/ {
if (!set) {
print "[snigdhaos-core]"
print "Server = https://snigdha-os.github.io/snigdhaos-core/x86_64"
print ""
set=1
err=0
}
}
END {exit err}
1' /etc/pacman.conf
}
verify-core(){
local invalid_nvidia=()
if [ -f "/usr/lib/modprobe.d/nvidia-utils.conf" ] && [ -f "/usr/share/licenses/nvidia-dkms/LICENSE" ]; then
for i in /usr/lib/modules/[0-9]*; do
if pacman -Qo "${i}" &>/dev/null; then
local nvidia
nvidia="$(grep -ohP '^.*/nvidia.ko[^/]*(?=:)' "${i}/modules.dep" 2>/dev/null || true)"
if [ -z "$nvidia" ] || [[ "$(modinfo "${i}/${nvidia}" -F vermagic 2>/dev/null | cut -d' ' -f1)" != "${i##*/}" ]]; then
invalid_nvidia+=("${i##*/}")
fi
fi
done
fi
# Oops, at least one is invalid!
if [ ${#invalid_nvidia[@]} -ne 0 ]; then
dkms_version="$(pacman -Rddp --print-format %v nvidia-dkms 2>/dev/null)"
if [ -n "${dkms_version}" ]; then
echo -e "\n\033[1;33m-->\033[1;34m A problem with the NVIDIA drivers has been detected\033[0m"
fi
for i in "${invalid_nvidia[@]}"; do
if [ -n "${dkms_version}" ]; then
echo -e "\n\033[1;33m--->\033[1;34m Building NVIDIA DKMS module for kernel $i\033[0m"
dkms remove -m nvidia -v "${dkms_version%-*}" -k "$i" || true
dkms install -m nvidia -v "${dkms_version%-*}" -k "$i" && depmod "$i" && echo -e "\033[1;33m--->\033[1;32m NVIDIA DKMS module for kernel $i built successfully\033[0m" || echo -e "\033[1;33m--->\033[1;31m Failed to build NVIDIA DKMS module for kernel $i\033[0m"
elif command -v dkms >/dev/null; then
dkms autoinstall -k "$i" && depmod "$i"
fi
done
fi
}
"$@" exit "$?"