Den Backofen auf 200°C (Ober-/Unterhitze) vorheizen. Eine Auflaufform (ca. 20x30 cm) leicht einfetten.
Die Nudeln in einem großen Topf mit reichlich Salzwasser nach Packungsanweisung kochen, jedoch etwa 2 Minuten kürzer als angegeben, damit sie noch Biss haben (al dente). Anschließend abgießen und gut abtropfen lassen.
Während die Nudeln kochen, die Käsesauce zubereiten. Dafür die Butter in einem mittleren Topf bei mittlerer Hitze schmelzen. Das Mehl hinzufügen und mit einem Schneebesen 1-2 Minuten unter ständigem Rühren anschwitzen, ohne dass es Farbe annimmt (Mehlschwitze).
Die Milch nach und nach unter kräftigem Rühren mit dem Schneebesen zur Mehlschwitze gießen. So lange weiterrühren, bis eine glatte, klumpenfreie Sauce entsteht. Die Sauce unter gelegentlichem Rühren aufkochen und etwa 5 Minuten köcheln lassen, bis sie andickt.
Den Topf vom Herd nehmen. Etwa zwei Drittel (ca. 170g) des geriebenen Schweizer Käses, den Senf und die geriebene Muskatnuss in die Sauce einrühren, bis der Käse vollständig geschmolzen ist. Die Sauce mit Salz und frisch gemahlenem Pfeffer kräftig abschmecken.
Die abgetropften Nudeln und die Schinkenwürfel direkt in den Topf zur Käsesauce geben und alles sorgfältig vermengen, bis Nudeln und Schinken gleichmäßig mit der Sauce überzogen sind.
Die Nudelmischung in die vorbereitete Auflaufform füllen und glatt streichen. Den restlichen geriebenen Käse gleichmäßig darüber verteilen.
Den Auflauf im vorgeheizten Ofen auf der mittleren Schiene für 20-25 Minuten backen, bis die Oberfläche goldbraun und knusprig ist und die Sauce an den Rändern blubbert.
Den fertigen Auflauf aus dem Ofen nehmen und vor dem Servieren etwa 5 Minuten ruhen lassen. Mit frischen Schnittlauchröllchen garnieren und heiß servieren.