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.
Full documentation with sample code is at https://pkg.go.dev/github.com/jbarham/rsvp#section-documenta....