summaryrefslogtreecommitdiff
path: root/gnu/services/vpn.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/services/vpn.scm')
-rw-r--r--gnu/services/vpn.scm19
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))))