Preheat the oven to 400. Spray a 9x13 baking dish with non-stick cooking spray.
Bring a large pot of lightly salted water to a boil. Add the pasta and cook to al dente, according to package directions. Drain and set aside.
In a skillet over medium-high heat cook the bacon until crispy. Transfer the bacon a plate and blot with a paper towel to absorb excess grease. Reserve two tablespoons of the bacon grease in a small bowl. Discard the rest, but leave the skillet just barely coated.
Add the onions and mushrooms to the skillet and cook for 5-7 minutes. Remove the skillet from the heat and set aside.
In a large saucepan, combine the bacon grease and butter over medium-high heat. Once the butter has melted, whisk in the flour and garlic and cook, stirring constantly until the mixture is lightly golden.
Whisk in the milk. Remove the saucepan from the heat and stir in the cheddar and Gouda cheese with a wooden spoon until completely melted. Add the crushed red pepper flakes, cayenne pepper, salt and pepper.
Crumble the bacon, reserving a bit for a garnish. Add the pasta, mushrooms, spinach and remaining bacon to the saucepan and stir until combined.
Pour the mixture into the prepared baking dish, top with reserved bacon bits and bake for 20 minutes or until golden and bubbly. Let rest for a few minutes, then serve.