1. Place the ground nuts and breadcrumbs together in a large bowl.
2. Heat the oil in a frying pan and cook the onions and celery for about 10 minutes or until soft and transparent. Add the mushrooms and tomatoes and cook for 5 minutes or until the moisture has evaporated. Remove from the heat, allow to cool and then add to the nut and breadcrumb mixture.
3. Add the tomato paste and dried spices and combine thoroughly. Stir in the egg to make a moist but not wet mixture. Add a little water if necessary. Season to taste and set aside.
4. Melt the butter in a saucepan and add the garlic. Cook over a low heat for 1 minute, then add the spinach with butter. Season to taste and set aside.
5. Heat the oil in a large saucepan, add the onion and celery and cook for 10 minutes or until soft but not brown. Add the sweet potato and cook until soft.
Remove from the heat and tip into a bowl. Add the rest of the ingredients and mix well. Set aside.
6. Lightly oil a large loaf tin. Line the bottom of the tin with greaseproof paper. Divide the nut mixture into 4 portions.
Layer the mixtures into the tin starting with nut mixture. Then add a layer of spinach, a layer of nut mixture, the macadamia mixture, the nut mixture, the remaining spinach and end with a layer of the nut mixture. Press down each layer with a spatula, making sure that the edges are neat. Cover with lightly oiled greaseproof paper.
7. Place the tin on a baking sheet and put on the middle shelf of the oven. Bake at 180 °C for 35-40 minutes. Remove from the oven and increase the temperature to 220 °C.
8. Allow the roast to cool in the tin on a wire rack for 10 minutes. Line a baking sheet with greaseproof paper and invert the tin onto it. Remove the tin and the greaseproof paper and return to the oven for a further 10 minutes.
9. Transfer to a serving dish. Top with braised nuts and onion sauce.
10. Sauté the onions in the butter until soft. Add the nuts and braise until lightly browned. Stir in the apricots and stock and simmer until syrupy and caramelised.