diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-05-28 14:38:13 +0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2013-05-28 14:39:48 +0200 |
commit | 2ec6759f5fade16c6b131a054d220a600635f9a7 (patch) | |
tree | 9000cf1c58baccfcc439b9fc398b32ee0b4dc05b /modules/services/networking | |
parent | f60393975f7c36a5f57330ffa4d1d826706cf64f (diff) | |
download | nixpkgs-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')
-rw-r--r-- | modules/services/networking/openvpn.nix | 18 |
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 ]; |