Heat the butter with the oil in a large saucepan. Add the onions, leeks and water. Cook over a medium heat for 7–8 minutes, stirring frequently until they begin to soften. Turn down the heat to very low, cover and cook gently for 20–25 minutes, stirring occasionally. Increase the heat slightly, add the garlic, thyme and sugar and cook, stirring, for 1 minute. Then add the vinegar and continue cooking, stirring frequently, for 3–4 minutes until the onions and leeks are light golden.
Peel the potatoes, cut in half lengthways and thinly slice. Add to the onion mixture with the stock. Bring to the boil, then reduce the heat, cover and cook for 15–20 minutes until the potatoes are tender and just beginning to break down and thicken the soup. Season to taste.
Meanwhile, prepare the croutes. Preheat the grill to medium. Trim the crusts off the bread and cut each slice into four triangles. Place on the rack of the grill and toast very lightly on both sides. Gently rub one side of each croute with the cut surface of the garlic, then spread with a thin layer of mustard. Top with the cheese and walnuts, pressing down gently.
Put the cheese-topped croutes back under the grill and toast for about 3 minutes until the cheese is just starting to bubble and brown and the walnuts are lightly toasted.
Sprinkle the soup with snipped chives, then serve with the gruyère croutes on top of the soup.