aboutsummaryrefslogtreecommitdiffstats
path: root/bin/nvidia2nouveau
diff options
context:
space:
mode:
Diffstat (limited to 'bin/nvidia2nouveau')
-rwxr-xr-xbin/nvidia2nouveau58
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