aboutsummaryrefslogtreecommitdiffstats
path: root/bin/nvidia2nouveau
blob: e862d8c5321eddf692b48d8ecb3503cae49a62e0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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