️ perf(_blank): add opt for invalid selection

This commit is contained in:
Eshan Roy
2024-11-20 01:17:37 +05:30
parent 7f47b2a36e
commit 96b0a02e69

View File

@@ -8,64 +8,77 @@ echo
echo "--->> Start snigdhaos-fixes <<---" echo "--->> Start snigdhaos-fixes <<---"
echo echo
# Function to get a kernel parameter value, with a default if the parameter is not found
get_kernel_param() { get_kernel_param() {
local param=$1 local param=$1
local default=$2 local default=$2
local value local value
# Extract the kernel parameter value, or use default if not found
value=$(cat /proc/cmdline | tr ' ' '\n' | grep "^${param}=" | cut -d '=' -f 2-) value=$(cat /proc/cmdline | tr ' ' '\n' | grep "^${param}=" | cut -d '=' -f 2-)
echo "${value:-${default}}" echo "${value:-${default}}"
} }
# Function to get the driver selection from the kernel parameters
get_driver() { get_driver() {
get_kernel_param driver get_kernel_param driver
} }
# Function to wait for pacman to become available if locked
wait_for_pacman() { wait_for_pacman() {
local timeout=30 local timeout=30
local interval=5 local interval=5
# Wait for pacman to finish operations if the database lock file exists
while [ -e "/var/lib/pacman/db.lck" ]; do while [ -e "/var/lib/pacman/db.lck" ]; do
echo "Pacman is not ready yet. Trying in ${interval} seconds." echo "Pacman is not ready yet. Trying in ${interval} seconds..."
sleep ${interval} sleep ${interval}
((timeout -= interval)) ((timeout -= interval))
if ((timeout <= 0)); then if ((timeout <= 0)); then
echo "Snigdha OS Removing Pacman db.lck!" echo "[WARNING] Pacman is still locked after waiting ${timeout}s. Attempting to remove db.lck..."
rm /var/lib/pacman/db.lck rm /var/lib/pacman/db.lck || { echo "[ERROR] Failed to remove db.lck. Exiting."; exit 1; }
fi fi
done done
} }
# Get the kernel parameter 'driver' to determine which selection to use
selection=$(get_driver) selection=$(get_driver)
echo echo
echo "Your Selection: ${selection}" echo "Your Selection: ${selection}"
echo echo
# Handle different driver selection cases
case ${selection} in case ${selection} in
free) free)
echo "Removing nvidia-dkms..." echo "Removing NVIDIA DKMS and related packages..."
pacman -Rns --noconfirm nvidia-dkms nvidia-utils nvidia-settings egl-wayland wait_for_pacman
cp /etc/calamares/settings-advanced-no-nvidia.conf /etc/calamares/settings-advanced.conf pacman -Rns --noconfirm nvidia-dkms nvidia-utils nvidia-settings egl-wayland || { echo "[ERROR] Failed to remove NVIDIA packages."; exit 1; }
cp /etc/calamares/settings-advanced-no-nvidia.conf /etc/calamares/settings-advanced.conf || { echo "[ERROR] Failed to copy Calamares settings."; exit 1; }
echo "NVIDIA packages removed, and settings updated."
;; ;;
freenonouveau) freenonouveau)
echo "Removing nvidia-dkms, nonouveau..." echo "Removing NVIDIA DKMS, NVIDIA utilities, and Nouveau..."
pacman -Rns --noconfirm nvidia-dkms nvidia-utils nvidia-settings egl-wayland xf86-video-nouveau wait_for_pacman
cp /etc/calamares/settings-advanced-no-nvidia.conf /etc/calamares/settings-advanced.conf pacman -Rns --noconfirm nvidia-dkms nvidia-utils nvidia-settings egl-wayland xf86-video-nouveau || { echo "[ERROR] Failed to remove NVIDIA and Nouveau packages."; exit 1; }
cp /etc/calamares/settings-advanced-no-nvidia.conf /etc/calamares/settings-advanced.conf || { echo "[ERROR] Failed to copy Calamares settings."; exit 1; }
echo "NVIDIA and Nouveau packages removed, and settings updated."
;; ;;
nonfree) nonfree)
echo "Keep nvidia and nonouveau" echo "Keeping NVIDIA and Nouveau packages."
;; ;;
nonfreenonouveau) nonfreenonouveau)
echo "Keep nvidia-dkms; removing nonouveau" echo "Keeping NVIDIA DKMS; removing Nouveau."
pacman -Rns --noconfirm xf86-video-nouveau wait_for_pacman
pacman -Rns --noconfirm xf86-video-nouveau || { echo "[ERROR] Failed to remove Nouveau package."; exit 1; }
echo "Nouveau package removed."
;; ;;
*) *)
echo "Invalid selection: ${selection}" echo "[ERROR] Invalid selection: ${selection}. Exiting."
exit 1 exit 1
;; ;;
esac esac
echo echo
echo "--->> End snigdhaos-fixes <<---" echo "--->> End snigdhaos-fixes <<---"
echo echo