summary refs log tree commit diff
path: root/modules/services/networking/openvpn.nix
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2013-05-28 14:38:13 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2013-05-28 14:39:48 +0200
commit2ec6759f5fade16c6b131a054d220a600635f9a7 (patch)
tree9000cf1c58baccfcc439b9fc398b32ee0b4dc05b /modules/services/networking/openvpn.nix
parentf60393975f7c36a5f57330ffa4d1d826706cf64f (diff)
downloadnixpkgs-2ec6759f5fade16c6b131a054d220a600635f9a7.tar
nixpkgs-2ec6759f5fade16c6b131a054d220a600635f9a7.tar.gz
nixpkgs-2ec6759f5fade16c6b131a054d220a600635f9a7.tar.bz2
nixpkgs-2ec6759f5fade16c6b131a054d220a600635f9a7.tar.lz
nixpkgs-2ec6759f5fade16c6b131a054d220a600635f9a7.tar.xz
nixpkgs-2ec6759f5fade16c6b131a054d220a600635f9a7.tar.zst
nixpkgs-2ec6759f5fade16c6b131a054d220a600635f9a7.zip
openvpn.nix: Use systemd.*
Also add an option ‘autoStart’ to configure whether an OpenVPN
instance should be started automatically.  And don't log to
/var/log/openvpn-* anymore.
Diffstat (limited to 'modules/services/networking/openvpn.nix')
-rw-r--r--modules/services/networking/openvpn.nix18
1 files changed, 12 insertions, 6 deletions
diff --git a/modules/services/networking/openvpn.nix b/modules/services/networking/openvpn.nix
index 4ea6fa135b0..63b6cc90f07 100644
--- a/modules/services/networking/openvpn.nix
+++ b/modules/services/networking/openvpn.nix
@@ -15,7 +15,6 @@ let
 
       upScript = ''
         #! /bin/sh
-        exec > /var/log/openvpn-${name}-up 2>&1
         export PATH=${path}
 
         # For convenience in client scripts, extract the remote domain
@@ -34,13 +33,13 @@ let
 
       downScript = ''
         #! /bin/sh
-        exec > /var/log/openvpn-${name}-down 2>&1
         export PATH=${path}
         ${cfg.down}
       '';
 
       configFile = pkgs.writeText "openvpn-config-${name}"
         ''
+          errors-to-stderr
           ${optionalString (cfg.up != "" || cfg.down != "") "script-security 2"}
           ${cfg.config}
           ${optionalString (cfg.up != "") "up ${pkgs.writeScript "openvpn-${name}-up" upScript}"}
@@ -50,12 +49,13 @@ let
     in {
       description = "OpenVPN instance ‘${name}’";
 
-      startOn = mkDefault "started network-interfaces";
-      stopOn = mkDefault "stopping network-interfaces";
+      wantedBy = optional cfg.autoStart [ "multi-user.target" ];
+      after = [ "network-interfaces.target" ];
 
       path = [ pkgs.iptables pkgs.iproute pkgs.nettools ];
 
-      exec = "${openvpn}/sbin/openvpn --config ${configFile}";
+      serviceConfig.ExecStart = "@${openvpn}/sbin/openvpn openvpn --config ${configFile}";
+      serviceConfig.Restart = "always";
     };
 
 in
@@ -144,6 +144,12 @@ in
           '';
         };
 
+        autoStart = mkOption {
+          default = true;
+          type = types.bool;
+          description = "Whether this OpenVPN instance should be started automatically.";
+        };
+
       };
 
     };
@@ -155,7 +161,7 @@ in
 
   config = mkIf (cfg.servers != {}) {
 
-    jobs = listToAttrs (mapAttrsFlatten (name: value: nameValuePair "openvpn-${name}" (makeOpenVPNJob value name)) cfg.servers);
+    systemd.services = listToAttrs (mapAttrsFlatten (name: value: nameValuePair "openvpn-${name}" (makeOpenVPNJob value name)) cfg.servers);
 
     environment.systemPackages = [ openvpn ];