Hi, Christopher Baines <m...@cbaines.net> skribis:
> Ludovic Courtès <l...@gnu.org> writes: > >> It’s nice that we have <nginx-configuration> but I noticed that, unlike >> most or all other configuration records that we have, it’s possible to >> create an <nginx-configuration> record that leads to a syntactically >> invalid nginx config file. >> >> For example, if you have a location block like this: >> >> (nginx-location-configuration >> (uri "/manual/") >> (body (list "alias /srv/guix-manual"))) >> >> Guix will silently create an invalid nginx config file, which you’ll >> only notice once you’ve reconfigured and nginx fails to start. > > I wonder if some errors could be caught at build time, before attempting > to start the service. > > If in the derivation to build the configuration file, nginx is run > against the built config file with -t, that might spot errors at > derivation build time. Yeah, this is probably doable. I would consider it a stop-gap measure though. Fundamentally, I think we should make it so that, by construction, invalid (or at least syntactically-invalid) config files cannot be produced. > An sexp representation sounds good, although I think records will work > out better for the common and high level parts. The way I see it, sexps and records could be almost indistinguishable provided some appropriate macrology. But sexps are definitely easier to implement. Thanks, Ludo’.