Bring a large pot of salted water to a boil. Cook the macaroni according to the package instructions until al dente. Drain and set aside.
In a large saucepan, melt the butter over medium heat. Whisk in the flour and cook for 1-2 minutes, stirring constantly, until it forms a paste.
Gradually whisk in the milk, ensuring no lumps form. Continue stirring until the mixture thickens slightly. Add the Dijon mustard, garlic powder, salt, and pepper.
Remove the pan from the heat and gradually add the cheddar and Gruyere cheese, stirring until fully melted and creamy.
Add the cooked macaroni to the cheese sauce, stirring until evenly coated.
If you like a crispy topping, preheat your oven to 375°F (190°C). Transfer the mac and cheese to a baking dish, sprinkle breadcrumbs and Parmesan cheese on top, and bake for 15-20 minutes until golden and bubbly.
Scoop into bowls, serve hot, and enjoy this cheesy delight!