This neatly gets rid of all the #:container? arguments. That's very nice! :-) I haven't actually built and tested these patches, but these LGTM. Just one minor observation below. > + (cons (service system-service-type > + (let ((locale (operating-system-locale-directory os))) > + (with-monad %store-monad > + (return `(("locale" ,locale)))))) > + (append base (list %containerized-shepherd-service)))) Why not rewrite this using just a call to append, that is remove the call to cons? Like so: (append base (list (service system-service-type (let ((locale (operating-system-locale-directory os))) (with-monad %store-monad (return `(("locale" ,locale)))))) %containerized-shepherd-service)) Or perhaps, this can be done with cons* also.