Grease a shallow 2.5 litre/4½ pint dish with butter.
Melt the butter in a pan over a high heat and fry the onion for few minutes. Lower the heat, cover and leave to soften for 15 minutes, stirring occasionally.
Remove the lid and increase the heat to remove any moisture. Sprinkle in the flour and then add the milk gradually, stirring well between each addition. Allow the sauce to thicken once all the milk has been added.
Season with salt and freshly ground black pepper, add lemon juice and the fresh haddock and cook for couple of minutes, stirring continuously until the fish is just cooked. Stir in the smoked haddock. Pour the mixture into the buttered dish and leave to cool. Top with the hard-boiled eggs.
Preheat the oven to 200C/400F/Gas 6.
For the topping, boil the potatoes in a pan of salted water until tender. This will take about 15 minutes, depending on the size of the potato chunks.
Drain well and tip the potatoes back into the pan. Add the milk and butter and mash until lump-free. (Use a ricer to get extra smooth mash.) Add salt and freshly ground black pepper to taste.
Spread the mash over the top of the sauce and fish in the dish and score with a fork.
Bake in the preheated oven for about 30 minutes, or until the potato is crisp and golden-brown.
