After then nth time copying and tweaking boilerplate Go code to enable HTTP graceful shutdown, I decided to package it up in to a library which I've called rsvp (i.e, "please respond").
Basic usage is to call rsvp.ListenAndServe which is a drop-in replacement for the standard library http.ListenAndServe function with graceful shutdown.
The default behavior can be customized with options to configure trigger signals, shutdown timeout and context, TLS and logging.