I had horrible problems with Nvidia before, to the point that it was almost impossible to clean out all the junk the blob left in the system and it just refused to start X for me.
You might try manual Nvidia driver uninstaller, but results are not guaranteed. All of this is the result of Nvidia totally disregarding proper upstream driver development.
I really appreciated switching to AMD, and leaving all these blobs horrors behind.
Most of them, at any rate. AMD still requires firmware blobs.
From a pragmatic sense (as opposed to a philosophical/ethical sense), a firmware blob is not nearly as bad as the nvidia situation.
With a firmware blob:
* The blob doesn't execute on the CPU, so it won't interefere with software running on the CPU.
* The code executing on the CPU is still GPL2, so there's no license issue with linking it into the kernel.
* The firmware blob doesn't need to use the kernel's internal API, and therefore doesn't need to be updated with each kernel version; furthermore, due to the fact that it doesn't need to link to the kernel. the CPU portion of the driver can be made entirely GPL2 and upstreamed.
* Another advantage, at least theoretically, it should be possible to use said driver with a non-x86 CPU (like ARM, MIPS, Power, RISC-V, and others).
Can't do any of that with nvidia's proprietary driver, which needs to run propoietary code on the CPU.