Hello Ludovic, Thank you for review. ludo@gnu.org (Ludovic Courtès) writes: > Oleg Pykhalov skribis: > >> * gnu/services/dns.scm (ddclient-configuration, opaque-ddclient-configuration, >> ddclient-service-type): New variables. >> (uglify-field-name, serialize-field, serialize-boolean, serialize-integer, >> serialize-string, serialize-list, serialize-extra-options, >> ddclient-activation, ddclient-shepherd-service, >> generate-ddclient-documentation, generate-opaque-ddclient-documentation): New >> procedures. >> * doc/guix.texi (DNS Services): Document it. > > [...] > >> +@subsubheading ddclient Service >> + >> +@cindex ddclient >> +@uref{https://sourceforge.net/projects/ddclient/, ddclient} is an address >> +updating utility for dynamic DNS services. > > It would be nice to expound a bit, like: > > The ddclient service described below runs the ddclient daemon, which > takes care of automatically updating DNS entries for service providers > such as DynDNS.com. OK. I improved little bit with “such as @uref{https://dyn.com/dns/, Dyn}.” if you don't mind. > Also, is there a better home page? I think no. I found http://ddclient.sf.net/ in Debian package recipe [1], but ‘curl -Ik --location http://ddclient.sf.net/’ returns a https://sourceforge.net/p/ddclient/wiki/Home/ URI. > Otherwise LGTM! > >> + (list (shepherd-service >> + (provision '(ddclient)) >> + (documentation "Run ddclient daemon.") >> + (start #~(make-forkexec-constructor >> + (list #$(file-append ddclient "/bin/ddclient") >> + "-foreground" "-file" "/etc/ddclient/ddclient.conf" >> + "-debug" "-verbose") >> + #:pid-file #$pid >> + #:environment-variables >> + (list "SSL_CERT_DIR=/run/current-system/profile\ >> +/etc/ssl/certs" >> + "SSL_CERT_FILE=/run/current-system/profile\ >> +/etc/ssl/certs/ca-certificates.crt"))) >> + (stop #~(make-kill-destructor)))))) > > Does it run as root? If there’s no option to run it (mostly) as > non-root, perhaps it would make sense to try using > ‘make-forkexec-constructor/container’ here (as a separate patch.) > > WDYT? It did run as root. I've succeeded to run it with ‘ddclient’ user. Also, the generated ‘ddclient.conf’ which contains secrets is stored in the store. I probably should change the ‘ddclient-activation’ procedure --8<---------------cut here---------------start------------->8--- (copy-file #$(plain-file "ddclient.conf" config-str) file) --8<---------------cut here---------------end--------------->8--- to a procedure which writes ‘config-str’ to the file without storing it somewhere else. WDYT? [1] https://packages.debian.org/stretch/ddclient