diff options
Diffstat (limited to 'bin/nvidia2nouveau')
-rwxr-xr-x | bin/nvidia2nouveau | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/bin/nvidia2nouveau b/bin/nvidia2nouveau new file mode 100755 index 0000000..e862d8c --- /dev/null +++ b/bin/nvidia2nouveau @@ -0,0 +1,58 @@ +#!/bin/bash +# nvidia -> nouveau + +set -e +# check if root +if [[ $EUID -ne 0 ]]; then + echo "You must be root to run this script. Aborting..."; + exit 1; +fi + +echo "Switching MODULES line in /etc/mkinitcpio.conf" +sed -i 's/#*MODULES="dm-mod nouveau"/MODULES="dm-mod nouveau"/' /etc/mkinitcpio.conf +sed -i 's/MODULES="dm-mod nvidia"/#MODULES="dm-mod nvidia"/' /etc/mkinitcpio.conf + +echo "Uninstalling nvidia drivers, installing nouveau drivers." + +declare -i NVIDIAINSTALL +NVIDIART=$(pacman -Qi|grep Name|grep nvidia-rt) + +if [[ -n "$NVIDIART" ]]; then + NVIDIAINSTALL=$NVIDIAINSTALL+1 + echo "Seems that nvidia-rt is installed. Marked for removal." +fi + +case $NVIDIAINSTALL in + 0) + pacman -Rdds --noconfirm nvidia nvidia-libgl lib32-nvidia-libgl + ;; + 1) + pacman -Rdds --noconfirm nvidia nvidia-rt nvidia-libgl lib32-nvidia-libgl + ;; +esac + +pacman -S --noconfirm nouveau-dri xf86-video-nouveau lib32-nouveau-dri + +echo "Switching X11 settings." +NVIDIACONF="/etc/X11/xorg.conf.d/20-nvidia.conf" +NOUVEAUCONF="/etc/X11/xorg.conf.d/20-nouveau.conf" +BKP=".bkp" + +if [ -f $NVIDIACONF ]; then + mv $NVIDIACONF "$NVIDIACONF$BKP" +fi + +if [[ -f "$NOUVEAUCONF$BKP" ]]; then + mv "$NOUVEAUCONF$BKP" $NOUVEAUCONF +fi + +echo "Building new initramfs images." +mkinitcpio -p linux + +if [[ -f "/etc/mkinitcpio.d/linux-rt.preset" ]]; then + mkinitcpio -p linux-rt +fi + +if [[ -f "/etc/mkinitcpio.d/linux-mainline.preset" ]]; then + mkinitcpio -p linux-rt +fi |