Boil the potatoes in 4 cups of water with 2-3 tablespoons of salt over high heat until fork-tender; about 20-25 minutes. Let the potatoes cool before peeling them. Slice the potatoes to your desired thickness and layer them in a baking dish.
Crisp the bacon in a large skillet. Drain the bacon and crumble for later. Retain 2 tablespoons of the bacon fat in the skillet. Add 4 tablespoons of butter to the pan and sauté the onions until softened over medium heat. Sprinkle in the flour to create a roux followed by the chicken stock. Whisk to form a thick sauce then add the cream cheese. Whisk until fully blended.
Next, add the gruyere and milk and whisk until smooth. Season the sauce to taste with salt and pepper. Cover the potatoes with the cheese sauce and bake in a 375 degrees preheated oven for 25 minutes. After 25 minutes, spread the cheddar over the casserole and bake until melted.
Remove the dish from the oven and top with bacon, scallion, and sour cream.