#!/bin/bash

# AstraLinux SE 1.6, AstraLinux CE 2.12, Ubuntu 18.04, nvidia binary(closed,proprietary) driver installer
# =======================================================================================================
# Author: Alexey Kovin <4l3xk3@gmail.com>
# All rights reserved
# Russia, Electrostal, 2018
set -ue
. gettext.sh
export TEXTDOMAINDIR=/usr/share/locale
export TEXTDOMAIN="astra-nvidia-install"

# Check EUID
# ----------
echo "EUID=$EUID"
if [ x"$EUID" != "x0" ]; then
    gettext "Launch program as administrator (sudo) (root) .."; echo
    exit 1
fi

# Xorg config
# -----------
timestamp="`date +%s`"
gettext "Removing xorg.conf .."; echo
if [ -f /etc/X11/xorg.conf ]; then
    mv -f /etc/X11/xorg.conf /etc/X11/backup-$timestamp-xorg.conf-backup
    eval_gettext '/etc/X11/xorg.conf removed, backup version: /etc/X11/backup-$timestamp-xorg.conf-backup' ; echo
fi

dpkg-reconfigure xserver-xorg

gettext "Choose install variant:"; echo
echo " 1 - nvidia-340"
echo " 2 - nvidia-driver-390"
echo " 3 - nvidia-driver-410"
echo " 4 - nvidia-driver-440"
echo " 5 - nvidia-driver-470"
echo " 6 - nvidia-driver-525"
echo " 7 - nvidia-driver-535"
echo " 8 - nvidia-driver-545"
echo " 9 - nvidia-driver-550"
echo "10 - nvidia-driver-555"
echo "11 - nvidia-driver-560"
CHVAR="11"
read CHVAR

case $CHVAR in
    1)  apt install --yes nvidia-340 nvidia-settings ;;
    2)  apt install --yes nvidia-driver-390 nvidia-settings xserver-xorg-video-nvidia-390 ;;
    3)  apt install --yes nvidia-driver-410 nvidia-settings xserver-xorg-video-nvidia-410 ;;
    4)  apt install --yes nvidia-driver-440 nvidia-settings xserver-xorg-video-nvidia-440 ;;
    5)  apt install --yes nvidia-driver-470 nvidia-settings xserver-xorg-video-nvidia-470 ;;
    6)  apt install --yes nvidia-driver-525 nvidia-settings xserver-xorg-video-nvidia-525 ;;
    7)  apt install --yes nvidia-driver-535 nvidia-settings xserver-xorg-video-nvidia-535 ;;
    8)  apt install --yes nvidia-driver-545 nvidia-settings xserver-xorg-video-nvidia-545 ;;
    9)  apt install --yes nvidia-driver-550 nvidia-settings xserver-xorg-video-nvidia-550 ;;
    10) apt install --yes nvidia-driver-555 nvidia-settings xserver-xorg-video-nvidia-555 ;;
    11) apt install --yes nvidia-driver-560 nvidia-settings xserver-xorg-video-nvidia-560 ;;
    *)  apt install --yes nvidia-driver-560 nvidia-settings xserver-xorg-video-nvidia-560 ;;
esac

# Steam i386 libs path fix
if [ -e /usr/lib32/i386-linux-gnu/ ] ; then
    if [ ! -e /usr/lib/i386-linux-gnu ] ; then ln -s /usr/lib32/i386-linux-gnu/ /usr/lib/i386-linux-gnu ; fi
fi

if ! grep -qE "^\s*blacklist\s+nouveau\s*$" /etc/modprobe.d/* ; then
    cp /etc/modprobe.d/blacklist.conf /etc/modprobe.d/blacklist.conf.$timestamp
    echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
fi
if ! grep -qE "^\s*options\s+nouveau\s+modeset\s*=\s*0\s*$" /etc/modprobe.d/* ; then
    cp /etc/modprobe.d/blacklist.conf /etc/modprobe.d/blacklist.conf.$timestamp
    echo "options nouveau modeset=0" >> /etc/modprobe.d/blacklist.conf
fi
if grep -qE "/^\s*nouveau\s+modeset\s*=\s*1\s*$" /etc/initramfs-tools/modules ; then sed -i.$timestamp -e "/^\s*nouveau\s\+modeset\s*=\s*1\s*$/d" /etc/initramfs-tools/modules ; fi

update-initramfs -u -k all

gettext "Reboot computer to apply changes"; echo
