>> +(define shared-network-service-type >> + (service-type (name 'shared-network) >> + (extensions (list (service-extension etc-service-type identity))) >> + (compose concatenate) >> + (extend append) >> + (default-value '()))) > > I’d encourage you to add a ‘description’ field as well. :-) Sure, will do. > 1. ‘service-type-name’ exists for debugging purposes, and I think we > shouldn’t rely on it at all in our code. Instead, we should > compare service types by identity, as in: > > (eq? (service-kind service) foo-service-type) Sure, will do. > 2. The notion of “shared network” is very much a container (or VM) > thing, so somehow it still doesn’t feel right to me that (gnu > system) has to be aware of these special cases. > > I think the ‘host-database-service-type’ wouldn’t have this problem, but > maybe it has other issues. I guess this needs more experimentation, > sorry for not coming up with clearer ideas! If these services (the shared-network service, the hosts-database service or indeed any other service) had access to the operating-system object `os', then they would be able to operate independently without having to be extended by `essential-services'. Is this possible somehow? Is it a good idea to give services access to the os fields?