Preheat oven to 400 degrees. Butter a 9x13-inch casserole dish. Heat a large pot of water over high heat for the pasta
Fry the bacon until crisp. Remove the bacon. Pour off all but 2 tablespoons of the bacon grease. After bacon cools.....crumble it.
Adjust the heat to medium-low and add the butternut squash and onion to the bacon grease. Cook, stirring occasionally, until the squash and onion are browned and cooked through. Once cooked, I use the back of a wooden spoon to mash up the mixture...it's ok to have some lumps :)
Add the pasta to the boiling water and cook the pasta according to the box directions for al dente pasta. Drain pasta after cooking.
In a large saucepan, melt 4 tablespoons of the butter over medium heat. Once the butter has melted, whisk in the flour and cook for about 1 minute, until the flour starts to brown a bit and smells nutty, whisking constantly. Add milk slowly, allowing sauce to come to a simmer.
Once the sauce comes to a simmer, stir in 6 ounces each of the Gruyere and cheddar cheeses, adding a handful at a time and stirring with a wooden spoon until completely melted before adding the next handful. Season with salt and pepper and turn off the heat.
Add the cooked, drained pasta, 3/4 of bacon and butternut squash mixture to the sauce. Stir with a wooden spoon until everything is completely combined and evenly distributed. Pour the mixture into the prepared casserole dish.
Melt the remaining 4 tablespoons butter. In a small bowl, mix the melted butter with the panko breadcrumbs.
Sprinkle the macaroni and cheese with the remaining shredded cheeses & bacon. Sprinkle the breadcrumb mixture on top of the cheese.
Bake until browned and bubbly, about 15 to 20 minutes. Allow to sit for 10 minutes before serving.