Fix the OpenVPN jobs
This commit is contained in:
parent
8adc1ee92e
commit
e0e0e57c26
@ -11,8 +11,8 @@ let
|
|||||||
makeOpenVPNJob = cfg: name:
|
makeOpenVPNJob = cfg: name:
|
||||||
let
|
let
|
||||||
|
|
||||||
path = (getAttr "openvpn-${name}" config.jobs).path;
|
path = (getAttr "openvpn-${name}" config.boot.systemd.services).path;
|
||||||
|
|
||||||
upScript = ''
|
upScript = ''
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
exec > /var/log/openvpn-${name}-up 2>&1
|
exec > /var/log/openvpn-${name}-up 2>&1
|
||||||
@ -28,17 +28,17 @@ let
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
${cfg.up}
|
${cfg.up}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
downScript = ''
|
downScript = ''
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
exec > /var/log/openvpn-${name}-down 2>&1
|
exec > /var/log/openvpn-${name}-down 2>&1
|
||||||
export PATH=${path}
|
export PATH=${path}
|
||||||
${cfg.down}
|
${cfg.down}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
configFile = pkgs.writeText "openvpn-config-${name}"
|
configFile = pkgs.writeText "openvpn-config-${name}"
|
||||||
''
|
''
|
||||||
${optionalString (cfg.up != "" || cfg.down != "") "script-security 2"}
|
${optionalString (cfg.up != "" || cfg.down != "") "script-security 2"}
|
||||||
@ -46,7 +46,7 @@ let
|
|||||||
${optionalString (cfg.up != "") "up ${pkgs.writeScript "openvpn-${name}-up" upScript}"}
|
${optionalString (cfg.up != "") "up ${pkgs.writeScript "openvpn-${name}-up" upScript}"}
|
||||||
${optionalString (cfg.down != "") "down ${pkgs.writeScript "openvpn-${name}-down" downScript}"}
|
${optionalString (cfg.down != "") "down ${pkgs.writeScript "openvpn-${name}-down" downScript}"}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
in {
|
in {
|
||||||
description = "OpenVPN instance ‘${name}’";
|
description = "OpenVPN instance ‘${name}’";
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ in
|
|||||||
default = {};
|
default = {};
|
||||||
|
|
||||||
example = {
|
example = {
|
||||||
|
|
||||||
server = {
|
server = {
|
||||||
config = ''
|
config = ''
|
||||||
# Simplest server configuration: http://openvpn.net/index.php/documentation/miscellaneous/static-key-mini-howto.html.
|
# Simplest server configuration: http://openvpn.net/index.php/documentation/miscellaneous/static-key-mini-howto.html.
|
||||||
@ -88,7 +88,7 @@ in
|
|||||||
up = "ip route add ...";
|
up = "ip route add ...";
|
||||||
down = "ip route del ...";
|
down = "ip route del ...";
|
||||||
};
|
};
|
||||||
|
|
||||||
client = {
|
client = {
|
||||||
config = ''
|
config = ''
|
||||||
client
|
client
|
||||||
@ -103,7 +103,7 @@ in
|
|||||||
up = "echo nameserver $nameserver | ${pkgs.openresolv}/sbin/resolvconf -m 0 -a $dev";
|
up = "echo nameserver $nameserver | ${pkgs.openresolv}/sbin/resolvconf -m 0 -a $dev";
|
||||||
down = "${pkgs.openresolv}/sbin/resolvconf -d $dev";
|
down = "${pkgs.openresolv}/sbin/resolvconf -d $dev";
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
description = ''
|
description = ''
|
||||||
@ -116,7 +116,7 @@ in
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
type = types.attrsOf types.optionSet;
|
type = types.attrsOf types.optionSet;
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
|
|
||||||
config = mkOption {
|
config = mkOption {
|
||||||
@ -158,9 +158,9 @@ in
|
|||||||
jobs = listToAttrs (mapAttrsFlatten (name: value: nameValuePair "openvpn-${name}" (makeOpenVPNJob value name)) cfg.servers);
|
jobs = listToAttrs (mapAttrsFlatten (name: value: nameValuePair "openvpn-${name}" (makeOpenVPNJob value name)) cfg.servers);
|
||||||
|
|
||||||
environment.systemPackages = [ openvpn ];
|
environment.systemPackages = [ openvpn ];
|
||||||
|
|
||||||
boot.kernelModules = [ "tun" ];
|
boot.kernelModules = [ "tun" ];
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user