Cook pasta until al dente, then drain and set aside. Fry bacon until crispy, crumble, and set aside.
In a large pot, melt butter and whisk in flour to form a roux. Gradually add milk, whisking constantly until thickened. (This can take longer than you think, I cook my roux for at least 5-8 minutes) Stir in cheddar and Gruyere cheeses until melted. Mix in mustard, garlic powder, onion powder, smoked paprika, cayenne, salt, and pepper.
Add pasta and bacon to the cheese sauce, coating evenly. Transfer to a greased 9x13" baking dish.
Bake at 425°F for 15-20 minutes until golden and bubbly.