# mhwd Driver Config

NAME="video-nvidia-390xx"
INFO="Closed source NVIDIA drivers for linux."
VERSION="2023.03.23"
FREEDRIVER="false"
PRIORITY="3"

CLASSIDS="0300 0302"
VENDORIDS="10de"
DEVICEIDS=">/var/lib/mhwd/ids/pci/nvidia-390xx.ids"

# Conflicts
CONFLICTS="nvidia-utils nvidia-settingsnvidia-470xx-utils nvidia-470xx-settings libxnvctrl-470xx"
CONFLICTS_64="lib32-nvidia-utils lib32-nvidia-470xx-utils"
CONKMOD="nvidia nvidia-470xx"

# Conflicts with other mhwd configs
MHWDCONFLICTS="video*nvidia*"

# Dependencies
DEPENDS="nvidia-390xx-utils nvidia-390xx-settings libxnvctrl-390xx"
DEPENDS_64="lib32-nvidia-390xx-utils"
DEPKMOD="nvidia-390xx"

XORGFILE="/etc/X11/mhwd.d/nvidia.conf"
MHWDGPU_BLCKLSTNVIDIA="/etc/modprobe.d/mhwd-gpu.conf"
MHWDGPU_MODLDNVIDIA="/etc/modules-load.d/mhwd-gpu.conf"

fix_screen_flickering()
{
	sed -i /'Section "Device"'/,/'EndSection'/s/'EndSection'/"\tOption \"RegistryDwords\" \"PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerDefault=0x2; PowerMizerDefaultAC=0x1\"\nEndSection"/g "${XORGFILE}"
}

post_install()
{
	nvidia-xconfig -o "${XORGFILE}" --composite &>/dev/null
	MHWD_ADD_BACKSPACE "${XORGFILE}"

	# Remove logo
	sed -i /'Section "Device"'/,/'EndSection'/s/'EndSection'/"\tOption \"NoLogo\" \"1\"\nEndSection"/g "${XORGFILE}"

	# Fix screen flickering for some nvidia devices
	MHWD_FUNC_ON_MATCH 0300 10de "0400 0401 0402 0403 0407 0409 0425" fix_screen_flickering

	mhwd-gpu --setmod nvidia --setxorg "${XORGFILE}"
	
	echo 'Section "ServerFlags"' >> "${XORGFILE}"
	echo '  Option "IgnoreABI" "1"' >> "${XORGFILE}"
	echo 'EndSection' >> "${XORGFILE}"

	# Without this 'glxgears' don't work in live-session
	MODULES_LOAD="/etc/modules-load.d"
	echo "nvidia-drm" >> "${MODULES_LOAD}/mhwd-gpu.conf"
	if [ ! "$(pgrep X)" ];	then
		modprobe nvidia-drm
	fi
}



post_remove()
{
	if [ -e "${XORGFILE}" ]; then
		rm "${XORGFILE}"
	fi

	if [ -f "${MHWDGPU_BLCKLSTNVIDIA}" ]; then
		sed -i '/^blacklist nouveau/d' "${MHWDGPU_BLCKLSTNVIDIA}"
		sed -i '/^blacklist ttm/d' "${MHWDGPU_BLCKLSTNVIDIA}"
		sed -i '/^blacklist drm_kms_helper/d' "${MHWDGPU_BLCKLSTNVIDIA}"
		sed -i '/^blacklist drm/d' "${MHWDGPU_BLCKLSTNVIDIA}"
	fi

	if [ -f "${MHWDGPU_MODLDNVIDIA}" ]; then
		sed -i '/^nvidia/d' "${MHWDGPU_MODLDNVIDIA}"
	fi

	mhwd-gpu --check
}

