Domagoj! This is finally on master with the following changes: Domagoj Stolfa 写道: > * gnu/services/vpn.scm (strongswan-configuration): New record > type. > (charon-plugins, strongswan-configuration-file) > (strongswan-shepherd-service, strongswan-service-type): New > variables. I don't know where this extra spacing came from but removed it. > +@subheading StrongSwan I'm sure some style guides disapprove, but I changed all usage of ‘StrongSwan’ to upstream's ‘strongSwan’. > +Currently, the StrongSwan service only provides legacy-style > configuration with > +ipsec.conf and ipsec.secrets files. We have cool @file{} mark up so I used it. > +@defvr {Scheme Variable} strongswan-service-type > +A service type for StrongSwan configuration. Added a very brief ‘IPsec VPN’ context. > +@lisp > +(service strongswan-service-type > + (strongswan-configuration > + (ipsec-conf "/etc/ipsec.conf") > + (ipsec-secrets "/etc/ipsec.secrets"))) Fixed the indentation. > +@item @code{ipsec-conf} (default: @code{#f}) > +The path to an ipsec.conf file. If set to @code{#f}, > @code{ipsec-secrets} will > +also be ignored. Reworded this to match the exception I added below. Added moar @file{}. > @c %end of automatic openvpn-server documentation This indicates that the author of the previous OpenVPN section automated the docs somehow. I moved it back. > @subsubheading Wireguard > diff --git a/gnu/services/vpn.scm b/gnu/services/vpn.scm > index 2bcbf76727..691cc3c05a 100644 > --- a/gnu/services/vpn.scm > +++ b/gnu/services/vpn.scm > @@ -26,6 +26,7 @@ > #:use-module (gnu services shepherd) > #:use-module (gnu system shadow) > #:use-module (gnu packages admin) > + #:use-module (gnu packages networking) Oops, noticed this only now… I don't think it's needed anymore. Can you confirm? ‘guix system’ & friends will now throw an inelegant error if ipsec-conf & ipsec-secrets are incongruent. I couldn't get meaningful location data out of CONFIG. This does the job: + (throw 'error + (G_ "strongSwan ipsec-conf and ipsec-secrets must \ +both be (un)set"))))) > +(define strongswan-service-type > + (service-type > + (name 'strongswan) > + (extensions > + (list (service-extension shepherd-root-service-type > + strongswan-shepherd-service))))) I added a default-value so people can simply write (service strongswan-service-type) and a short description. Thank you very much! T G-R