This is mostly copied form linux. We probably need better support for sharing descriptions between multiple OSes. But there are lots of differences, so this is not trivial.