Rinse the fish in cold water and put it into a shallow pan with the bay leaf, peppercorns and half of the milk. Bring to the boil and simmer gently, covered, for 15 minutes or until the fish flakes easily.
In another pan, heat the oil, add the onions and fry gently for 15 minutes until soft and lightly golden. Remove with a slotted spoon and reserve.
Put the potatoes in layers in a saucepan, sprinkling each layer with a few slivers from one of the garlic cloves, nutmeg and salt and pepper. Cover with the remaining milk, bring to the boil, then simmer gently for about 8—10 minutes until they are just done.
Put 4 of the eggs into a small pan, cover with water and boil for about 10 minutes until hard.
Rub an ovenproof casserole with the remaining garlic clove and spoon in the onions. Remove the fish with a slotted spoon and arrange on top of the onions. Strain the milk from the fish pan and reserve.
Add the tomatoes to the oil left in the onion pan and stir-fry over a high heat for 2—3 minutes until beginning to soften and exude a little liquid. Arrange the tomatoes on top of the fish and sprinkle with the dill. Bury the garlic clove used to rub around the casserole in the mixture.
Drain the potatoes, reserving the milk. Cool the eggs under cold running water, then shell and slice. Arrange the egg slices over the tomatoes, then cover with the potatoes.
Beat the remaining 2 eggs well, then whisk into the milk. Pour over the dish, adding a little extra milk if necessary, so that the liquid is level with the potatoes. Sprinkle the cheese on top.
Cook in a preheated oven, 180°C (350°F), Gas Mark 4, for 12—20 minutes until the ‘custard’ is very lightly set -you don’t want it too solid or the pie will be dry. Garnish with a dill sprigs and serve immediately.