In a large saucepan over low heat, melt the butter and gently cook the onion until soft, without allowing it to brown.
Add the chopped celeriac, potato, apples, and celery to the pan.
Pour in the stock or water. If needed, add a little more water to just cover the vegetables, as they will settle during cooking.
Cover the pan and let it gently simmer for 20–25 minutes, or until all the vegetables are tender.
While the soup simmers, make the walnut oil. Lightly crush the walnuts with a rolling pin. Toast them in a dry frying pan over medium heat, stirring frequently to prevent burning.
Once fragrant, turn off the heat and carefully pour the sunflower oil into the pan with the warm nuts. Allow to cool completely.
Once cooled, transfer the walnut oil to a clean, airtight container. It can be stored in the fridge for up to 2 weeks.
Using a hand-held immersion blender, blend the soup directly in the saucepan until it is completely smooth. The potato starch will help thicken it to a velvety consistency.
Stir in the milk and cream and gently reheat the soup, but do not let it boil, as the dairy may split. If the soup is too thick, add a splash more milk until you reach your desired consistency.
Season generously with sea salt and a good few grinds of fresh black pepper.
Serve immediately in warmed bowls, finished with a drizzle of the homemade walnut oil and a side of nutty wholemeal bread.
Don't worry if you're out of vegetable stock; this soup is so flavourful on its own that water works perfectly well as the liquid base.