about summary refs log tree commit diff
path: root/nixos
diff options
context:
space:
mode:
authorRick Yang <rick68@gmail.com>2015-12-10 00:52:44 +0800
committerRok Garbas <rok@garbas.si>2016-01-20 03:47:33 +0100
commitf8c3130e0fb0bc1545fed1ef2974c9509208c59f (patch)
treea1783e9d8ca68a86e61e773d6318930ede792496 /nixos
parent5b8c8718420671f7af2b0189299a55e43c252d5b (diff)
downloadnixlib-f8c3130e0fb0bc1545fed1ef2974c9509208c59f.tar
nixlib-f8c3130e0fb0bc1545fed1ef2974c9509208c59f.tar.gz
nixlib-f8c3130e0fb0bc1545fed1ef2974c9509208c59f.tar.bz2
nixlib-f8c3130e0fb0bc1545fed1ef2974c9509208c59f.tar.lz
nixlib-f8c3130e0fb0bc1545fed1ef2974c9509208c59f.tar.xz
nixlib-f8c3130e0fb0bc1545fed1ef2974c9509208c59f.tar.zst
nixlib-f8c3130e0fb0bc1545fed1ef2974c9509208c59f.zip
softether: Fixed problems with using systemd services
Diffstat (limited to 'nixos')
-rw-r--r--nixos/modules/services/networking/softether.nix31
1 files changed, 17 insertions, 14 deletions
diff --git a/nixos/modules/services/networking/softether.nix b/nixos/modules/services/networking/softether.nix
index a421b32f02c2..5e49efc3aa3a 100644
--- a/nixos/modules/services/networking/softether.nix
+++ b/nixos/modules/services/networking/softether.nix
@@ -61,11 +61,14 @@ in
             dataDir = cfg.dataDir;
           }))
         ];
-      systemd.services.softether = {
-        description = "SoftEther VPN services initial job";
-        after = [ "network-interfaces.target" ];
-        wantedBy = [ "multi-user.target" ];
-        preStart = ''
+      systemd.services."softether-init" = {
+        description = "SoftEther VPN services initial task";
+        wantedBy = [ "network-interfaces.target" ];
+        serviceConfig = {
+          Type = "oneshot";
+          RemainAfterExit = false;
+        };
+        script = ''
             for d in vpnserver vpnbridge vpnclient vpncmd; do
                 if ! test -e ${cfg.dataDir}/$d; then
                     ${pkgs.coreutils}/bin/mkdir -m0700 -p ${cfg.dataDir}/$d
@@ -81,12 +84,12 @@ in
     (mkIf (cfg.vpnserver.enable) {
       systemd.services.vpnserver = {
         description = "SoftEther VPN Server";
-        after = [ "network-interfaces.target" ];
-        wantedBy = [ "multi-user.target" ];
+        after = [ "softether-init.service" ];
+        wantedBy = [ "network-interfaces.target" ];
         serviceConfig = {
+          Type = "forking";
           ExecStart = "${pkg}/bin/vpnserver start";
           ExecStop = "${pkg}/bin/vpnserver stop";
-          Type = "forking";
         };
         preStart = ''
             rm -rf ${cfg.dataDir}/vpnserver/vpnserver
@@ -101,12 +104,12 @@ in
     (mkIf (cfg.vpnbridge.enable) {
       systemd.services.vpnbridge = {
         description = "SoftEther VPN Bridge";
-        after = [ "network-interfaces.target" ];
-        wantedBy = [ "multi-user.target" ];
+        after = [ "softether-init.service" ];
+        wantedBy = [ "network-interfaces.target" ];
         serviceConfig = {
+          Type = "forking";
           ExecStart = "${pkg}/bin/vpnbridge start";
           ExecStop = "${pkg}/bin/vpnbridge stop";
-          Type = "forking";
         };
         preStart = ''
             rm -rf ${cfg.dataDir}/vpnbridge/vpnbridge
@@ -121,12 +124,12 @@ in
     (mkIf (cfg.vpnclient.enable) {
       systemd.services.vpnclient = {
         description = "SoftEther VPN Client";
-        after = [ "network-interfaces.target" ];
-        wantedBy = [ "multi-user.target" ];
+        after = [ "softether-init.service" ];
+        wantedBy = [ "network-interfaces.target" ];
         serviceConfig = {
+          Type = "forking";
           ExecStart = "${pkg}/bin/vpnclient start";
           ExecStop = "${pkg}/bin/vpnclient stop";
-          Type = "forking";
         };
         preStart = ''
             rm -rf ${cfg.dataDir}/vpnclient/vpnclient