To save you the pain of searching for the solution, in this video I share my findings:
ffmpeg -video_size 1920x1080 \
-framerate 50 \
-thread_queue_size 512 -f x11grab -i :0.0+0,0 \
-thread_queue_size 512 -f oss -i /dev/dsp8 \
-vcodec libx264rgb -crf 0 -preset:v ultrafast \
-acodec pcm_s16le \
-af aresample=async=1:first_pts=0 \
-y \
output.mkv
The thread_queue_size parameters ensure enough buffer space for the raw input streams, and the aresample filter ensures audio and video are synced.
On my machine the microphone is on /dev/dsp8 and is a Zoom h2n