#!/bin/sh

[ ! -f /run/gfxdetect ] && exit 0

[ ! -d /root/etc/X11 ] && exit 0

gfx="$(cat /run/gfxdetect)"

nvidia=
if [ -z "$gfx" ]; then
 driver=mesa-diverted
 card=
else
 driver=${gfx%% *}
 card=${gfx##* }
 if [ "$driver" = "nvidia" ]; then
  nvidia=${gfx#$driver}
  nvidia=$(echo ${nvidia% *})
 fi
fi

if [ "$driver" = "fglrx" -a ! -d /root/usr/lib/fglrx ] || [ "$nvidia" -a ! -d /root/usr/lib/nvidia/$nvidia ] ; then
 rm -f /etc/modprobe.d/pcidetect.conf
 driver=mesa-diverted
 card=
 > /run/gfxdetect
fi

chroot /root update-alternatives --set glx /usr/lib/$driver
[ "$nvidia" -a -d /root/usr/lib/nvidia/$nvidia ] && chroot /root update-alternatives --set nvidia /usr/lib/nvidia/$nvidia
rm -f /root/etc/modprobe.d/pcidetect.conf
[ -f /etc/modprobe.d/pcidetect.conf ] && cp /etc/modprobe.d/pcidetect.conf /root/etc/modprobe.d

old=$(cat /root/var/tmp/gfxdetect.pci 2>/dev/null)
new=$(cat /run/gfxdetect.pci)
rm -f /root/var/tmp/gfxdetect.pci
cp /run/gfxdetect.pci /root/var/tmp

[ "$old" != "$new" ] && rm -f /root/etc/ati/amdpcsdb

[ "$driver" = "mesa-diverted" ] && driver=default

rm -f /root/etc/X11/xorg.conf.last

[ -f /root/etc/X11/xorg.conf ] && mv /root/etc/X11/xorg.conf /root/etc/X11/xorg.conf.last

case $driver in
 fglrx)
  printf 'Section "Device"\n    Identifier     "Device0"\n    Driver         "'$driver'"\nEndSection\n' > /root/etc/X11/xorg.conf
  ;;
esac

if [ -f /root/etc/X11/xorg.conf.$driver ]; then
 rm -f /root/etc/X11/xorg.conf
 cp /root/etc/X11/xorg.conf.$driver /root/etc/X11/xorg.conf
fi

if [ "$nvidia" -a -f /root/etc/X11/xorg.conf.${driver}.${nvidia} ]; then
 rm -f /root/etc/X11/xorg.conf
 cp /root/etc/X11/xorg.conf.$driver /root/etc/X11/xorg.conf
fi

if [ -f /root/etc/X11/xorg.conf.$card ]; then
 rm -f /root/etc/X11/xorg.conf
 cp /root/etc/X11/xorg.conf.$card /root/etc/X11/xorg.conf 
fi
