Recently I got into FreeBSD (version 15) and tried to set it up as my desktop. As of now I think FreeBSD needs some more polishing to be used as a daily desktop.

WiFi#
My card is not supported currently but I heard drivers are on the way. So I had
to use a package called wifibox which spins up a headless Alpine Linux using
the built-in bhyve virtualisation tool. It exposes sockets to control the
wpa_supplicant on the guest machine to the host machine using socat. It worked
really well but you have to give up some memory (around 150MB).
Graphics#
I have an all AMD machine meaning my CPU, iGPU, dGPU all of them are AMD. So
drivers should never be an issue. I set up amdgpu and xorg. For some reason
my primary GPU was always the dGPU. When I forced xorg to change primary to
iGPU it would boot to a black screen. Not sure why this happens but if I were to
guess it would be that the kernel finds the dGPU first since its at PCI:3:0:0
(iGPU is at 7:0:0) and flips the mux that way since my laptop is set to hybrid
mode.
This next issue is weird. Some packages which supports nvidia-drivers install
it as dependency. But apart from taking up some unwanted storage it is not a big
deal. But when these drivers are installed it runs some script which replaces
the mesa libglx.so.0 library in the modules directory of xorg with nvidia
versions of it breaking my graphics pipeline. So now my glxinfo gives me
"cannot load glx module" errors. xorg always loads the nvidia version even
if I force amdgpu. Only fix was to manually remove those files. There is no
blocklist for pkg through which I can ban all things related to nvidia. Maybe
a solution is to run a script after every pkg operation to check for these
file changes and revert them back to the original version.