diff options
Diffstat (limited to 'gnu/services/vpn.scm')
-rw-r--r-- | gnu/services/vpn.scm | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/gnu/services/vpn.scm b/gnu/services/vpn.scm index df84905eb3..3e370ba4be 100644 --- a/gnu/services/vpn.scm +++ b/gnu/services/vpn.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2021 Tobias Geerinckx-Rice <[email protected]> ;;; Copyright © 2021 Raghav Gururajan <[email protected]> ;;; Copyright © 2021 jgart <[email protected]> +;;; Copyright © 2021 Nathan Dehnel <[email protected]> ;;; ;;; This file is part of GNU Guix. ;;; @@ -67,6 +68,7 @@ wireguard-configuration-interface wireguard-configuration-addresses wireguard-configuration-port + wireguard-configuration-dns wireguard-configuration-private-key wireguard-configuration-peers @@ -302,7 +304,7 @@ client. Each file is named after the name of the client." (define-split-configuration openvpn-client-configuration openvpn-server-configuration ((openvpn - (package openvpn) + (file-like openvpn) "The OpenVPN package.") (pid-file @@ -561,7 +563,7 @@ is truncated and rewritten every minute.") (define-record-type* <strongswan-configuration> strongswan-configuration make-strongswan-configuration strongswan-configuration? - (strongswan strongswan-configuration-strongswan ;<package> + (strongswan strongswan-configuration-strongswan ;file-like (default strongswan)) (ipsec-conf strongswan-configuration-ipsec-conf ;string|#f (default #f)) @@ -704,7 +706,7 @@ strongSwan."))) (define-record-type* <wireguard-configuration> wireguard-configuration make-wireguard-configuration wireguard-configuration? - (wireguard wireguard-configuration-wireguard ;<package> + (wireguard wireguard-configuration-wireguard ;file-like (default wireguard-tools)) (interface wireguard-configuration-interface ;string (default "wg0")) @@ -715,7 +717,9 @@ strongSwan."))) (private-key wireguard-configuration-private-key ;string (default "/etc/wireguard/private.key")) (peers wireguard-configuration-peers ;list of <wiregard-peer> - (default '()))) + (default '())) + (dns wireguard-configuration-dns ;list of strings + (default #f))) (define (wireguard-configuration-file config) (define (peer->config peer) @@ -739,7 +743,7 @@ AllowedIPs = ~a "\n")))) (match-record config <wireguard-configuration> - (wireguard interface addresses port private-key peers) + (wireguard interface addresses port private-key peers dns) (let* ((config-file (string-append interface ".conf")) (peers (map peer->config peers)) (config @@ -755,6 +759,7 @@ AllowedIPs = ~a Address = ~a PostUp = ~a set %i private-key ~a ~a +~a ~{~a~^~%~}" #$(string-join addresses ",") #$(file-append wireguard "/bin/wg") @@ -762,6 +767,10 @@ PostUp = ~a set %i private-key ~a #$(if port (format #f "ListenPort = ~a" port) "") + #$(if dns + (format #f "DNS = ~a" + (string-join dns ",")) + "") (list #$@peers))))))))) (file-append config "/" config-file)))) |