Preheat the oven to 350℉ (180℃). Grease a 13x9x2-inch (33x23x5 cm) casserole dish and set aside.
In a large pot or dutch oven on medium high heat, saute the mushrooms in one tablespoon of olive oil. Season with a pinch of salt and pepper. Once cooked, remove from the pot and set aside.
Add the remaining olive oil, onions, and cabbage to the pot and cook for about 10 minutes. You want the cabbage to have a little bit of a bite to it still. Season with salt and pepper to taste.
*If the entire head of cabbage won’t fit, you may need to add in batches as it cooks down. Stir frequently to avoid burning or sticking to the bottom of the pot.
Once the cabbage and onions are cooked, add the mushrooms back into the pot.
For the binder: In a small pot melt butter over medium heat, add the flour and stir constantly until the flour is cooked, about 2-4 minutes. The roux should change to a shade darker in color.
Once the roux is ready, add milk ½ cup (115 ml) at a time, stirring constantly until a thick smooth sauce forms, about 5 minutes. Next, add one cup (115 g) of baby swiss cheese, ⅛ teaspoon nutmeg, ⅛ teaspoon cayenne, and salt and pepper to taste.
Now add the sauce to the pot with cabbage, mushrooms, and onions and stir until completely incorporated.
Pour all ingredients into the prepared casserole dish. Sprinkle the remaining cheese on top and bake uncovered for 25 minutes, the cheese should be melted and bubbling.
Sprinkle the chopped walnuts over the top of the cheese and return to the oven for another 5 minutes.
Allow the casserole to stand at room temperature for 10 to 15 minutes before serving.
Optionally garnish the casserole with chopped celery leaves, parsley, green onion, or chives.