Add onions into pan with butter & a pinch of salt, & cook over a medium heat for 30-40 mins until dark, golden & caramelised.
Add stock & thyme, turn heat to medium-high, cook for 10 minutes until most of the stock has been absorbed & evaporated. Set aside.
To make breadcrumbs, slice 1 small baguette into discs, add into a bowl with olive oil, thyme & salt, then mix together until evenly coated. Lay bread out onto a baking tray & cook oven for 5-10 mins until golden & crisp. Remove from oven, place into blender & blitz into coarse breadcrumbs.
For the sauce, melt butter in a pan over medium heat then mix in the flour until combined. Cook for a few mins, then gradually whisk in the milk, taking your time to ensure no lumps form. Once the milk is mixed in, bubble sauce for a few mins, constantly stirring so bottom doesn't burn.
Remove bechamel from the heat, add in ⅔rds of caramelised onions, cheeses, mustard, nutmeg & salt & pepper to taste. Set sauce aside until ready to use.
For the pasta, bring a large pot of water to a boil, season with salt then add in the dried pasta. Cook for 8-10 mins, until just al dente. Reserve some of the pasta water then strain pasta.
Place pasta in large pan, pour over sauce & mix. If sauce too thick, add splash of pasta water & mix. Smooth it out, top with breadcrumbs & remaining caramelised onions. Place under grill for 5 mins to toast breadcrumbs a little more, remove from the oven & serve.
