One idea I toyed with is automatic translation of service types from System to Home. The service itself would look like this: --8<---------------cut here---------------start------------->8--- (define-module (gnu home services syncthing) #:use-module (gnu home services) #:use-module (gnu services syncthing) #:export (home-syncthing-service-type) #:re-export (syncthing-configuration syncthing-configuration?)) (define home-syncthing-service-type (system-service-type->home-service-type syncthing-service-type)) --8<---------------cut here---------------end--------------->8--- The code to do that is attached below. The key here is that we’d define mappings, like: (define-service-type-mapping shepherd-root-service-type => home-shepherd-service-type) The rest of the service type graph would be automatically constructed from this. I feel like it would be worth pursuing this path so that there’s as little duplication as possible between Home and System. OTOH, it doesn’t take care of things like #:user in ‘make-forkexec-constructor’ calls and the like. Thoughts? Ludo’.