Put the stock or water, turkey neck, heart, gizzard, onion, and bay leaf into a saucepan.
Bring the mixture to a simmer, then reduce the heat to low. Cover and simmer gently for 2 hours.
Turn off the heat, then strain, and reserve the turkey stock.
Once the turkey is cooked, remove it from the roasting pan and put it on to a serving platter, loosely covered with foil. Meanwhile, remove the fat from the roasting pan and put 4 tablespoons of it into a large saucepan over a medium-high heat. Add the flour and cook for about 5 minutes until golden, whisking throughout.
Whilst whisking, add the turkey stock, a cup at a time.
Bring the mixture to a simmer, whisking often. Scrape up any browned bits and juices from the bottom of the roasting pan and add them to the gravy.
Lower the heat and simmer for about 10 to 15 minutes.
Strain if necessary, add the sage, and season to taste with salt and pepper.
Serve hot with the turkey.