It turns out my .ghci file was allowing me to use some extensions without explicitly declaring them. Fixed that issue, and while I was at it, I sorted and cleaned up language pragmas in all files.