Heat a large nonstick skillet over medium-high heat. Once hot, add ham in batches, turning with kitchen tongs and cooking until crispy on all sides. Remove and place on a plate.
Heat a small saucepan over medium heat and add butter. Once sizzling, whisk in flour and cook until golden, about 1-2 minutes, to create a roux. Add milk and stir constantly until slightly thickened, then reduce heat and add in gruyere. Stir until melted, then season with salt, pepper and nutmeg.
Heat a large electric griddle or skillet over medium heat. Take four slices of bread, spreading a small amount of the cheese sauce on each slice, leaving a bit of sauce for topping the sandwiches at the end. Top two slices with the ham, then cover with the other slice of bread, cheese-side down. Add butter to the skillet or griddle, then cook and until both sides are golden and crispy.
While sandwiches are cooking, cook the eggs as you desire.
Preheat the broiler on your oven. Place the sandwiches on a baking sheet and cover the tops with the remaining cheese sauce and grated cheese. Place under the broiler for 1-2 minutes, then top each with an egg. Enjoy!