Having got a green light from Andre, I uploaded hdaemonize to Hackage.
I also cleaned up the library a bit. Reading up on POSIX signals I decided that it is wrong for the daemonize library to mess with them beyond blocking HUP. Also, now it has two functions, daemonize :: IO () -> IO ()
which does the bare minimum, and serviced :: Program -> IO ()
that does that and more, for example writing a PID file, handling start/stop/restart, catching and logging exceptions to syslog.
Time to try it out in production.