Cook the pasta to al dente according to package directions. Once cooked, drain and set aside.
In a large sauce pan or high-sided skillet, melt the coconut oil or butter over medium-high heat. Add the onion and allow to saute until it begins to soften and become translucent, about 4-5 minutes.
Sprinkle flour over onions and stir. {The mixture will become dry and pasty.} Cook for about a minute.
Slowly whisk in the wine {or broth if not using wine}, breaking up the mixture to make it as smooth as possible. Let it simmer until the liquid is almost all gone.
Stir in the broth, mustard, nutmeg and cayenne if using. Bring to a bubble and allow the mixture to thicken slightly, about 3 minutes.
Add butternut squash puree and milk and stir until just combined, and allow it to warm through for about a minute. Remove from burner.
Add a cup of cheese at a time, stirring after each addition until fully melted. Stir in salt, then taste and adjust seasoning as needed.
Add the cooked macaroni and stir it into the soup gently as to keep the pasta intact.
Serve hot with fresh chives over top, if desired. For a smoky touch, add a sprinkle of smoked paprika.