#!/bin/bash

# Exit codes
# 0 - All's well
# 1 - Not root
# 2 - Wrong parameters
# 3 - No driver available
# 4 - Driver not in repository
# 5 - Download error
# 6 - Cannot purge driver
# 7 - Card not supported

###original code from the solydXK project.
####MODIFICATIONS FOR MX by dolphin oracle
##depends: nvidia-detect-mx, nvidia-detect and cli-shell-utils
##modifications assume MX repos for the nvidia drivers
##

#add BitJam's soure cli-shell-utils
source /usr/local/lib/cli-shell-utils/cli-shell-utils.bash

ME=${0##*/}
CLI_PROG="ddm-mx"
LOCK_FILE="/run/lock/$CLI_PROG"
ERR_FILE="/dev/null"
LOG="/var/log/ddm.log"
BP_REPO="buster-backports"
BP_REPO_ADDRESS="deb http://ftp.debian.org/debian"
MX_TEST_REPO_ADDRESS="deb http://la.mxrepo.com/mx/testrepo/ buster test"
BACKPORTS_OVERRIDE=false

TEXTDOMAINDIR=/usr/share/locale 
export TEXTDOMAIN="ddm-mx"

UNKNOWN_ERROR=$"Unknown error"
OPTION_ERROR1=$"Option-"
OPTION_ERROR2=$"requires an argument."
RUN_AS_ROOT=$"Run as root"
INSTALL_DRIVERS_FOR=$"Install drivers for: "

NVIDIA_XCONFIG="nvidia-xconfig"

ARCH=$(dpkg --print-architecture)

main(){
# -------------------------------------------------------------------------
###file locking
echo $"creating lock ..." | tee -a $LOG
trap clean_up EXIT
do_flock 


#get release info
source /etc/lsb-release
echo
echo "Distribution:  " $DISTRIB_ID
echo

# -------------------------------------------------------------------------

BACKPORTS=false
PURGE=''
INSTALL=''
FORCEDRIVER=''
TEST=false
while getopts ":f:bi:p:ht" opt; do
  case $opt in
    h)
      usage
      exit 0
      ;;
    i)
      # Install
      INSTALL="$INSTALL$OPTARG"
      echo "INSTALL IS $INSTALL"
      ;;
    p)
      # Purge
      PURGE="$PURGE $OPTARG"
      ;;
    t)
      # Testing
      echo "TEST Install"
      TEST=true
      ;;
    b)
      # Testing
      BACKPORTS_OVERRIDE=true
      ;;
    f)
      # Testing
      FORCEDRIVER="$FORCEDRIVER$OPTARG"
      echo "FORCE DRIVER is $FORCEDRIVER"
      ;;
    \?)
      # Invalid option: start GUI
      #launch_gui $@
      echo $"Invalid option" | tee -a $LOG
      exit 0
      ;;
    :)
      echo $OPTIONERROR1$OPTARG $OPTION_ERROR2 | tee -a $LOG
      exit 2
      ;;
    *)
      # Unknown error: start GUI
      #launch_gui $@
      echo $"Invalid option" | tee -a $LOG
      exit 0
      ;;
  esac
done

# Is there anything to do?
if [ "$INSTALL" == "" ]; then
  TEST=false
fi

# From here onward: be root
if [ $UID -ne 0 ]; then
  echo $RUN_AS_ROOT | tee -a $LOG
  exit 1
fi

# Log file for tracebackBACKPORTS_OVERRIDE
MAX_SIZE_KB=5120
LOG_SIZE_KB=0
LOG=/var/log/ddm.log
LOG2=/var/log/ddm.log.1
if [ -f $LOG ]; then
  LOG_SIZE_KB=$(ls -s $LOG | awk '{print $1}')
  if [ $LOG_SIZE_KB -gt $MAX_SIZE_KB ]; then
    mv -f $LOG $LOG2
  fi
fi 

##disable installation of nvidia-persistenced
cp /usr/share/ddm-mx/apt/nvidia* /etc/apt/preferences.d

# =========================================================================
# =========================================================================
# =========================================================================
####removed certain options for mx
# Loop through drivers to purge
for DRV in $PURGE; do
  # Start the log
  echo "===================================" | tee -a $LOG
  echo $"Purge drivers for: "$DRV | tee -a $LOG
  echo $"Start at (m/d/y):" $(date +"%m/%d/%Y %H:%M:%S") | tee -a $LOG
  echo "===================================" | tee -a $LOG
  
  case $DRV in
    ati)
      install_open
      ;;
    nvidia)
      install_open
      ;;
    open)
      ;;
    fixbumblebee)
      ;;
    *)
      echo $"ERROR: Unknown argument: $DRV" | tee -a $LOG
      echo
      usage
      exit 2
      ;;
  esac
done
####removed certain options for mx
# Loop through drivers to install
for DRV in $INSTALL; do
  # Start the log
  echo "===================================" | tee -a $LOG
  echo $INSTALL_DRIVERS_FOR $DRV | tee -a $LOG
  echo $"Start at (m/d/y):" $(date +"%m/%d/%Y %H:%M:%S") | tee -a $LOG
  echo "===================================" | tee -a $LOG
  
  case $DRV in
    
    nvidia)
      # Bumblebee: https://wiki.debian.org/Bumblebee
      # Get device ids for Nvidia
      BCID='10de'
      DEVICEIDS=$(lspci -n -d $BCID: | awk '{print $3}' | cut -d':' -f2)
      
      # Testing
      if $TEST; then
        DEVICEIDS='0a74'
      fi

      if [ "$DEVICEIDS" == "" ]; then
	echo $"No nvidia card found - exiting" | tee -a $LOG
	exit 0
      fi

      # Install the Nvidia drivers
      install_nvidia
      ;;
    open)
      # Install the open drivers
      install_open
      ;;
    fixbumblebee)
      # purge nvidia-xconfig and move xorg.conf away
      apt-get purge -y $FORCE nvidia-xconfig 2>&1 | tee -a $LOG
      mv -f /etc/X11/xorg.conf /etc/X11/xorg.conf.ddm 2>&1 | tee -a $LOG
      ;;
    *)
      echo $"ERROR: Unknown argument: " $DRV | tee -a $LOG
      echo
      usage
      exit 2
      ;;
  esac
done

exit 0
}

function usage() {
  echo "======================================================================"
  echo $"Device Driver Manager Help:"
  echo "======================================================================"
  echo $"The following options are allowed:"
  echo
  echo "-b            Offer debian-backports alternative"
  echo
  echo $"-i driver    Install given driver."
#  echo "             drivers: ati, nvidia, broadcom, open, pae, fixbumblebee"
  echo $"             drivers: nvidia, open, fixbumblebee"
  echo
  echo $"-p driver    Purge given driver."
#  echo "             driver: ati, nvidia, broadcom, pae"
  echo $"             driver: nvidia"
  echo
  echo $"-f           Force DDM to start, even in a Live environment."
  echo
  echo $"-t           For development testing only!"
  echo $"             This will install drivers for pre-defined hardware."
  echo $"             Use with -i."
  echo
  echo "----------------------------------------------------------------------"
#  echo "sudo ddm - nvidia -i pae -p broadcom"
#  echo "sudo ddm -i \"nvidia pae\" -p broadcom"
#  echo "Both commands install nvidia and pae but purges broadcom."
   echo "sudo ddm-mx -i nvidia"
#  echo "sudo ddm-mx -i ati"
  echo "======================================================================"
}



# =========================================================================
# =============================== Functions ===============================
# =========================================================================

# nvidia -------------------------------------------------------------------------

function preseed_nvidia {
  CANDIDATE=$1
  echo 'nvidia-support nvidia-support/check-xorg-conf-on-removal boolean false' | debconf-set-selections
  echo 'nvidia-support nvidia-support/check-running-module-version boolean true' | debconf-set-selections
  echo 'nvidia-installer-cleanup nvidia-installer-cleanup/delete-nvidia-installer boolean true' | debconf-set-selections
  echo 'nvidia-installer-cleanup nvidia-installer-cleanup/remove-conflicting-libraries boolean true' | debconf-set-selections
  echo "nvidia-support nvidia-support/last-mismatching-module-version string $CANDIDATE" | debconf-set-selections
  echo 'nvidia-support nvidia-support/needs-xorg-conf-to-enable note ' | debconf-set-selections
  echo 'nvidia-support nvidia-support/create-nvidia-conf boolean true' | debconf-set-selections
  echo 'nvidia-installer-cleanup nvidia-installer-cleanup/uninstall-nvidia-installer boolean true' | debconf-set-selections
}

function install_nvidia {
  USER=$(logname)
  ARCHITECTURE=$(uname -m)
  DRIVER=$(nvidia-detect-mx |grep INSTALL: |tr -d ' ' |cut -d ':' -f2)
  UNSUPPORTED_LEGACY=$(nvidia-detect-mx | grep -e173.14 -e96.43 -e71.86)
  
  # Testing
  if $TEST; then
    DRIVER="$FORCEDRIVER"
    TESTSWITCH="-s"
  fi
  
  if [ -z "$FORCEDRIVER" ]; then
		DRIVER="$FORCEDRIVER"
  fi	

  update_sources
  check_cand

echo ""

  #check for possible source install
  if [ -e /usr/bin/nvidia-installer ]; then
    echo $"Possible previous install from source or smxi/sgfxi detected." | tee -a $LOG
    echo $"Version detected: " $(modinfo nvidia | grep ^version: | sed 's/[^0-9.]*//g') | tee -a $LOG
    echo $"Latest possible with this script : " $CANDIDATE | tee -a $LOG
    echo $"Please remove with  <sudo nvidia-install --uninstall> and reboot if you wish to proceed" | tee -a $LOG
    exit 0
  fi

  # Check for Optimus
    OPTIMUS=1
    if lspci -vnn | grep Intel |grep -q 0300 ; then
        if lspci -vnn | grep NVIDIA | grep -q 0302 ; then
            echo $"nvidia-optimus detected"
            OPTIMUS=2
        else
            YES_no $"Is this a NVIDIA/INTEL Optimus system?"
            if [ $? = 0 ]; then
                OPTIMUS=2
            fi
            
        fi
    fi

    if [ $OPTIMUS = 2 ]; then
		BUMBLEBEE_NVIDIA_VERSION="$DRIVER"
        DRIVER='bumblebee-nvidia'    
        check_cand
    fi
  echo ""
  echo $"Candidate is: " $CANDIDATE | tee -a $LOG
  echo $"Installed is: " $INSTALLED | tee -a $LOG
  echo ""

  MAIN_CAND=$CANDIDATE
  if [ "$DISTRIB_ID" = "MX" ]; then
    if [ "$BACKPORTS_OVERRIDE" = "true" ]; then
        debian_backports_dialog
    else
        mx_test_repo_dialog
    fi
  else
    debian_backports_dialog
  fi
  check_cand

  if [ -f /etc/apt/sources.list.d/debian-backports-temp.list ]; then
      if [ "$MAIN_CAND" = "$CANDIDATE" ]; then 
       echo $"Candidate is: " $CANDIDATE | tee -a $LOG
       echo $"Debian backports candidate is:  "  $CANDIDATE |tee -a $LOG
       echo $"Installed is: " $INSTALLED | tee -a $LOG
       echo ""
       BP=""
       SWITCH=""
      else
       echo $"Main repo candidate is:  " $MAIN_CAND |tee -a $LOG
       echo $"Debian backports candidate is:  "  $CANDIDATE |tee -a $LOG
       echo $"Installed is: " $INSTALLED | tee -a $LOG
       echo ""
       which_driver
       echo ""
      fi 
  else
      echo $"Candidate is: " $CANDIDATE | tee -a $LOG
      echo $"Installed is: " $INSTALLED | tee -a $LOG
      echo ""
  fi  
  
  if [ -f /etc/apt/sources.list.d/mx-test-repo-temp.list ]; then
      if [ "$MAIN_CAND" = "$CANDIDATE" ]; then 
       echo $"Candidate is: " $CANDIDATE | tee -a $LOG
       echo $"MX Test repo candidate is:  "  $CANDIDATE |tee -a $LOG
       echo $"Installed is: " $INSTALLED | tee -a $LOG
       echo ""
       BP=""
       SWITCH=""
      else
       echo $"Main repo candidate is:  " $MAIN_CAND |tee -a $LOG
       echo $"MX Test repo candidate is:  "  $CANDIDATE |tee -a $LOG
       echo $"Installed is: " $INSTALLED | tee -a $LOG
       echo ""
       which_driver_mx
       echo ""
      fi 
  else
      echo $"Candidate is: " $CANDIDATE | tee -a $LOG
      echo $"Installed is: " $INSTALLED | tee -a $LOG
      echo ""
  fi  
  
  if [ "$CANDIDATE" != "" ]; then
      if [ "$INSTALLED" = "$CANDIDATE" ]; then
        echo $"nvidia driver already installed" | tee -a $LOG
        echo "" | tee -a $LOG
        echo $"Reinstall or quit?" | tee -a $LOG
        echo "" | tee -a $LOG
        echo 1: $"Reinstall" | tee -a $LOG
        echo 2: $"quit" | tee -a $LOG
        echo "" | tee -a $LOG
        echo $"Enter Number of selection" | tee -a $LOG
        read -n 1 -e x

        case $x in
           1) echo $"reinstalling"... | tee -a $LOG ;;
           2) echo $"exiting"... | tee -a $LOG && exit 0 ;;
           *) echo $"invalid option."  $"exiting"... | tee -a $LOG && exit 0;;
        esac
      fi
  fi
  
  echo ""
  
  if [ "$DRIVER" == "" ] || [ "$CANDIDATE" == "" ]; then
      if [ "$UNSUPPORTED_LEGACY" == "" ]
         then
              echo $"nvidia driver not available, check your repo sources" | tee -a $LOG
              exit 3
 
         else 
	      echo $"Uh oh. Your card is only supported by older legacy drivers which are not in any current Debian suite." | tee -a $LOG
              exit 7
      fi
  fi
  
  echo ""
  echo $"Need driver: "$DRIVER "($CANDIDATE)" | tee -a $LOG

  
  # Add additional packages


  case $DRIVER in 
                     nvidia-driver)    if [ "$ARCHITECTURE" == "x86_64" ]; then
                                           NVIDIA_XCONFIG=""
                                           DRIVER="$DRIVER nvidia-settings nvidia-kernel-dkms libnvidia-encode1" 
                                       else
										   NVIDIA_XCONFIG=""
                                           DRIVER="$DRIVER nvidia-kernel-dkms nvidia-settings libnvidia-encode1" 
                                       fi
                                       ;;
        nvidia-legacy-340xx-driver)    if [ "$ARCHITECTURE" == "x86_64" ]; then
                                           DRIVER="$DRIVER nvidia-settings-legacy-340xx nvidia-legacy-340xx-kernel-dkms $NVIDIA_XCONFIG"
                                       else
                                           DRIVER="$DRIVER nvidia-settings-legacy-340xx nvidia-legacy-340xx-kernel-dkms $NVIDIA_XCONFIG"
                                       fi
                                       ;;
        nvidia-legacy-390xx-driver)    if [ "$ARCHITECTURE" == "x86_64" ]; then
                                           NVIDIA_XCONFIG=""
                                           DRIVER="$DRIVER nvidia-settings-legacy-390xx nvidia-legacy-390xx-kernel-dkms"
                                       else
                                           NVIDIA_XCONFIG=""
                                           DRIVER="$DRIVER nvidia-settings-legacy-390xx nvidia-legacy-390xx-kernel-dkms"
                                       fi
                                       ;;
                  bumblebee-nvidia)    if [ "$DRIVER" == "bumblebee-nvidia" ]; then
											NVIDIA_XCONFIG=""
                                       # Bumblebee drivers
                                            if [ "$BUMBLEBEE_NVIDIA_VERSION" == "nvidia-legacy-390xx-driver" ]; then
												DRIVER="$DRIVER $BUMBLEBEE_NVIDIA_VERSION nvidia-legacy-390xx-kernel-dkms primus primus-libs-ia32:i386 virtualgl virtualgl-libs:i386"
											else
												if [ "$BUMBLEBEE_NVIDIA_VERSION" == "nvidia-driver" ]; then
												DRIVER="$DRIVER $BUMBLEBEE_NVIDIA_VERSION nvidia-kernel-dkms primus primus-libs-ia32:i386 virtualgl virtualgl-libs:i386"
												fi
									       fi
                                       fi
                                       ;;
                                 *)
                                       echo "2" $"ERROR: Unknown argument: " $DRV | tee -a $LOG 
                                       echo | tee -a $LOG 
                                       usage
                                       exit 2
   esac

echo "$NVIDIA packages to install are " $DRIVER | tee -a $LOG  

#echo -n $"Press <Enter> to continue or Ctrl-c to exit" | tee -a $LOG 
#read x
YES_no $"Continue?"
    if [ "$?" = "1" ]; then 
        exit 0
    fi
 
  # Preseed debconf answers
  preseed_nvidia $CANDIDATE
  INSTALL_RECOMMENDS="--install-recommends"
  if [ "$BUMBLEBEE_NVIDIA_VERSION" == "nvidia-legacy-390xx-driver" ]; then
	INSTALL_RECOMMENDS=""
  fi
  
  # Install the packages
  #apt-get update | tee -a $LOG 
  echo "Frontend: $(echo $DEBIAN_FRONTEND)" | tee -a $LOG

  echo $"Nvidia command " "= apt-get install --install-recommends --reinstall -y $FORCE $SWITCH $BP $DRIVER" | tee -a $LOG
  apt-get install --reinstall -y linux-headers-$(uname -r) build-essential firmware-linux-nonfree $TESTSWITCH 2>&1 | tee -a $LOG
  apt-get install --reinstall $INSTALL_RECOMMENDS -y $SWITCH $BP $DRIVER $TESTSWITCH 2>&1 | tee -a $LOG
  

# Configure
  if [[ "$DRIVER" =~ "bumblebee-nvidia" ]]; then
    if [ "$USER" != "" ] && [ "$USER" != "root" ]; then
      groupadd bumblebee
      groupadd video
      usermod -a -G bumblebee,video $USER
      #if [ -f /etc/bumblebee/bumblebee.conf ]; then
	#sed -i -e 's/KernelDriver=nvidia\s*$/KernelDriver=nvidia-current/' /etc/bumblebee/bumblebee.conf
      #fi
      service bumblebeed restart
      # Adapt nvidia settings
      if [ -f /usr/lib/nvidia/current/nvidia-settings.desktop ]; then
        sed -i 's/Exec=nvidia-settings/Exec=optirun -b none nvidia-settings -c :8/' /usr/lib/nvidia/current/nvidia-settings.desktop
      fi
      # purge nvidia-xconfig and move xorg.conf away
      apt-get purge -y $FORCE nvidia-xconfig 2>&1 | tee -a $LOG
      #mv -f /etc/X11/xorg.conf /etc/X11/xorg.conf.ddm 2>&1 | tee -a $LOG
    else
      echo $"ERROR: Could not configure Bumblebee for user: " $USER | tee -a $LOG
    fi
  else
    if $TEST; then
    echo $"test enabled, not creating xorg.conf file"
    #nvidia-xconfig | tee -a $LOG
    else
        if [ "$NVIDIA_XCONFIG" = "nvidia-xconfig" ]; then
            $"creating /etc/X11/xorg.conf file"
            nvidia-xconfig | tee -a $LOG
        fi
    fi
  fi
  
  echo $"Finished" | tee -a $LOG
  
}

# open -------------------------------------------------------------------------

function purge_proprietary_drivers {
  rm /etc/X11/xorg.conf 2>/dev/null
  rm /etc/modprobe.d/nvidia* 2>/dev/null
  rm /etc/modprobe.d/blacklist-nouveau.conf 2>/dev/null
  # Leave nvidia-detect and nvidia-installer-cleanup
  apt-get purge $FORCE $(apt-cache pkgnames | grep nvidia | grep -v detect | grep -v cleanup | cut -d':' -f1) bumblebee* primus* primus*:i386 2>&1 | tee -a $LOG
# apt-get purge $FORCE bumblebee* primus* primus*:i386 2>&1 | tee -a $LOG

  if [ "$?" = "0" ]; then 
      echo $"Proprietary drivers removed" | tee -a $LOG
  fi
}

function install_open {
  # Make sure you have the most used drivers installed 
  # These are installed by default on SolydXK
  DRIVER="xserver-xorg-video-nouveau xserver-xorg-video-vesa xserver-xorg-video-intel xserver-xorg-video-fbdev xserver-xorg-video-radeon xserver-xorg-video-ati xserver-xorg-video-nouveau"
  
  # Install the packages
  update_sources
  echo "Frontend: $(echo $DEBIAN_FRONTEND)" | tee -a $LOG
  echo $"Open command " "= apt-get install --reinstall -y $FORCE $DRIVER" | tee -a $LOG
  apt-get install --reinstall $FORCE $DRIVER 2>&1 | tee -a $LOG
  
  if [ "$?" = "0" ]; then 
      echo $"Open drivers installed" | tee -a $LOG
  fi
  
  # Now cleanup
  purge_proprietary_drivers
}

clean_up()
{
unflock $LOCK_FILE
echo "" | tee -a $LOG 
echo "" | tee -a $LOG 
if [ -f /etc/apt/sources.list.d/debian-backports-temp.list ]; then
  rm -f /etc/apt/sources.list.d/debian-backports-temp.list
  echo $"Resetting sources"
  apt-get update
  echo ""
fi
if [ -f /etc/apt/sources.list.d/mx-test-repo-temp.list ]; then
    rm -f /etc/apt/sources.list.d/mx-test-repo-temp.list
    echo $"Resetting sources"
    apt-get update
    echo ""
fi

##re-enable nvidia-peristenced availability

rm /etc/apt/preferences.d/nvidia-ddm-temp*

echo -n $"Press <Enter> to exit" | tee -a $LOG 
read x
}

my_exit() {
    local ret=${1:-0}

    # Msg "=> cleaning up"
    exit $ret
}

enable_debian_backports()
{
#enabling debian-backports
  echo $"Enabling backports repo"
  echo $"Running apt-get update..."
  echo "$BP_REPO_ADDRESS $BP main contrib non-free">>/etc/apt/sources.list.d/debian-backports-temp.list
  update_sources
  echo ""
  if [ "$ARCH" = "amd64" ]; then
    echo $"Installing latest nvidia-detect package"|tee -a $LOG
    echo ""
    apt-get install $SWITCH $BP nvidia-detect |tee -a $LOG  
    echo ""
  fi
}

enable_mx_test_repo()
{
#enabling mx_test_repo
  echo $"Enabling MX Test repo"
  echo $"Running apt-get update..."
  echo "$MX_TEST_REPO_ADDRESS">>/etc/apt/sources.list.d/mx-test-repo-temp.list
  update_sources
  echo ""
  if [ "$ARCH" = "amd64" ]; then
    echo $"Installing latest nvidia-detect package"|tee -a $LOG
    echo ""
    apt-get install nvidia-detect |tee -a $LOG  
    echo ""
  fi
}

debian_backports_dialog()
{
echo $"Would you like to check debian-backports for a later version?" | tee -a $LOG
        echo "" | tee -a $LOG
        echo $"Yes or No?" | tee -a $LOG
        echo "" | tee -a $LOG
        echo 1: $"Yes" | tee -a $LOG
        echo 2: $"No" | tee -a $LOG
        echo "" | tee -a $LOG
        echo "Enter Number of selection" | tee -a $LOG
        read -n 1 -e x

        case $x in
           1) echo $"Ok"...| tee -a $LOG 
	      SWITCH="-t"
              BP=$BP_REPO
	      enable_debian_backports	;;
           2) echo $"Ok"... | tee -a $LOG
              SWITCH=""
	      BP=""             ;;
           *) echo $"invalid option."  $"exiting"... | tee -a $LOG && exit 0;;
        esac
}

mx_test_repo_dialog()
{
echo $"Would you like to check MX Test Repo for a later version?" | tee -a $LOG
        echo "" | tee -a $LOG
        echo $"Yes or No?" | tee -a $LOG
        echo "" | tee -a $LOG
        echo 1: $"No" | tee -a $LOG
        echo 2: $"Yes" | tee -a $LOG
        echo "" | tee -a $LOG
        echo "Enter Number of selection" | tee -a $LOG
        read -n 1 -e x

        case $x in
           2)   echo $"Ok"...| tee -a $LOG 
                SWITCH=""
                BP="" 
                enable_mx_test_repo	;;
           1)   echo $"Ok"... | tee -a $LOG
                SWITCH=""
                BP=""           ;;
           *) echo $"invalid option."  $"exiting"... | tee -a $LOG && exit 0;;
        esac
}


which_driver()
{
echo $"Which driver do you wish to install" | tee -a $LOG
        echo "" | tee -a $LOG
        echo $"Main repos or debian-backports?" | tee -a $LOG
        echo "" | tee -a $LOG
        echo 1: $"Main" $MAIN_CAND| tee -a $LOG
        echo "" | tee -a $LOG
        echo 2: $"debian-backports" $CANDIDATE | tee -a $LOG
        echo "" | tee -a $LOG
	echo 3: $"Exit" | tee -a $LOG
        echo "" | tee -a $LOG
        echo $"Enter Number of selection" | tee -a $LOG
        read -n 1 -e x

        case $x in
           1) echo $"Ok"...| tee -a $LOG 
	      SWITCH=""
              BP=""
	      ;;
           2) echo $"Ok"... | tee -a $LOG
                #NVIDIA_XCONFIG=""
                     ;;
           3) echo $"exiting" |tee -a $LOG && exit 0;;

           *) echo $"invalid option."  $"exiting"... | tee -a $LOG && exit 0;;
        esac
}

which_driver_mx()
{
echo $"Which driver do you wish to install" | tee -a $LOG
        echo "" | tee -a $LOG
        echo $"Main repos or MX Test" | tee -a $LOG
        echo "" | tee -a $LOG
        echo 1: $"Main" $MAIN_CAND| tee -a $LOG
        echo "" | tee -a $LOG
        echo 2: "MX Test" $CANDIDATE | tee -a $LOG
        echo "" | tee -a $LOG
	echo 3: $"Exit" | tee -a $LOG
        echo "" | tee -a $LOG
        echo $"Enter Number of selection" | tee -a $LOG
        read -n 1 -e x

        case $x in
           1) echo $"Ok"...| tee -a $LOG 
                SWITCH=""
                BP=""
                rm /etc/apt/sources.list.d/mx-test-repo-temp.list
                apt-get update
                    ;;
           2)   echo $"Ok"... | tee -a $LOG
                SWITCH="-t"
                BP="\"a=mx,c=test\""
                #NVIDIA_XCONFIG=""
                     ;;
           3) echo $"exiting" |tee -a $LOG && exit 0;;

           *) echo $"invalid option."  $"exiting"... | tee -a $LOG && exit 0;;
        esac
}


check_cand()
{
CANDIDATE=`env LANG=C apt-cache policy $SWITCH $BP $DRIVER | grep Candidate | awk '{print $2}' | tr -d ' '`
INSTALLED=`env LANG=C apt-cache policy $DRIVER | grep Installed | awk '{print $2}' | tr -d ' '`
}

update_sources()
{
    local ret
    echo ""
    echo $"Refreshing Sources with apt-get update" | tee -a $LOG
    YES_no $"Continue?"
    if [ "$?" = "0" ]; then 
        apt-get update
        if [ "$?" != "0" ]; then
            echo ""
            echo ""
            echo $"There was a problem with the apt-get update.  See $LOG for details" | tee -a $LOG
            echo ""
            echo ""
            my_exit
        fi
    fi
}

main "$@"


