Preheat oven to 325 degrees Fahrenheit and grease a 9x13 inch baking dish.
Boil a pot of salted water and cook the pasta 1 minute less than the recommended cooking time on the package. Drain and drizzle with a bit of olive oil to prevent sticking.
Shred the cheddar and Gruyere cheese and mix together, then divide into three portions (3 cups for the sauce, 1 1/2 cups for the inner layer, and 1 1/2 cups for the topping).
In a large saucepan, melt the butter over medium heat. Sprinkle the flour and whisk until it resembles wet sand. Cook for 1 minute, whisking often.
Slowly pour in half and half and whole milk, whisking constantly until smooth. Heat over medium heat until thickened to a condensed soup consistency.
Remove from heat and stir in spices and 1 1/2 cups of the cheese. Stir in another 1 1/2 cups of cheese until completely melted and smooth.
In a large mixing bowl, combine the pasta and cheese sauce. Pour half of the mixture into the baking dish, top with 1 1/2 cups of shredded cheese, and cover with the remaining pasta mixture.
Sprinkle the top with the last 1 1/2 cups of cheese and bake for 15 minutes until cheese is bubbly and lightly golden brown.