# mhwd Driver Config

NAME="video-nvidia-340xx"
INFO="Closed source NVIDIA drivers for linux."
VERSION="2021.02.27"
FREEDRIVER="false"
PRIORITY="16"

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

# Conflicts
CONFLICTS="nvidia-utils nvidia-390xx-utils nvidia-418xx-utils nvidia-430xx-utils nvidia-435xx-utils nvidia-440xx-utils nvidia-450xx-utils nvidia-455xx-utils nvidia-460xx-utils"
CONFLICTS_64="lib32-nvidia-utils lib32-nvidia-390xx-utils lib32-nvidia-418xx-utils lib32-nvidia-430xx-utils lib32-nvidia-435xx-utils lib32-nvidia-440xx-utils lib32-nvidia-450xx-utils lib32-nvidia-455xx-utils lib32-nvidia-460xx-utils"
CONKMOD="nvidia-390xx nvidia-418xx nvidia-430xx nvidia-435xx nvidia-440xx nvidia-450xx nvidia-455xx nvidia-460xx"

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

# Dependencies
DEPENDS="nvidia-340xx-utils"
DEPENDS_64="lib32-nvidia-340xx-utils"
DEPKMOD="nvidia-340xx"

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}"
}



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
}

