Preheat oven to 400 degrees.
Place squash in a pot and cover with water. Bring to a boil and cook until fork tender. Drain and place in a food processor. Process the squash until a puree is formed. Scrape into a container and cover with a lid.
Cook pasta until al dente. Reserve 1/2 cup of pasta water. Drain and set aside.
While pasta is cooking heat a large oven-safe pan over medium-high heat. Add olive oil, butter, chili flakes and onion. Cook until onion starts to soften and then add garlic and cook until fragrant.
Sprinkle flour over onion and garlic. Cook for one minute to cook off the raw flour.
Pour in chicken stock and milk. Whisk until the sauce is smooth.
Add cayenne pepper and freshly grated nutmeg, and whisk to combine.
Turn the heat up to allow the mixture to come to a bubble whisking constantly. Once sauce has thickened reduce heat to low and add squash puree.
Add cooked pasta and stir to thoroughly combine.
Add 1 cup of white cheddar and 1 cup of gruyere and stir to combine.
Sprinkle remaining cheddar on top and evenly spread crumb topping on top of the cheese.
Cover pan with a lid or tinfoil and place in the oven to bake for 20 minutes.
Increase the temperature to broil.
Remove lid and broil for 3-5 minutes until the topping is toasty and pasta is bubbly.
Allow it to cool for a minimum of 5 minutes before serving.