Prepare. Preheat the oven to 350 F (180 C). Grease a 3-quart baking dish with butter. Cook the pasta according to package directions, but stop cooking it one to two minutes before the recommended time. Drain and set aside.
Make the topping. Mix together the first four topping ingredients with a fork. Slowly drizzle melted the butter into the mix, stirring constantly to coat evenly.
Make the roux. Mix together the milk and cream. Melt the butter for the sauce on medium heat in a large pot. Add the garlic for the sauce, and saute until just fragrant, 20 to 30 seconds. Whisking constantly, add the flour. Keep whisking as it cooks until the mixture is fluffy and bubbly, and the color just barely begins getting more golden, 3 to 5 minutes.
Finish the sauce. Still whisking constantly, slowly pour the milk and cream mixture into the pan. Once it’s fully incorporated, continue whisking and cooking over medium heat until the sauce gets thick. (This should happen pretty quickly.) Turn off the heat but leave the pot on the hot burner. Add about 2/3rds of each of the cheeses for the sauce, and mix until melted and the sauce is homogenous. Whisk in the spices (optional) and salt to taste.
Assemble and bake. Pour the sauce over the prepared pasta and fold together gently to coat the pasta evenly. Transfer half of the pasta into the prepared baking dish, and sprinkle with the remaining cheese from the sauce. Put the rest of the pasta into the baking dish. Evenly distribute the topping mix over the pasta. Bake at 350 F (180 C) until the crumb topping is golden brown in spots and you can hear a bit of bubbling, 30 to 40 minutes. Enjoy!