diff --git a/nixos/modules/services/networking/strongswan.nix b/nixos/modules/services/networking/strongswan.nix
index b0eb0460b9ba..3a3f64221c42 100644
--- a/nixos/modules/services/networking/strongswan.nix
+++ b/nixos/modules/services/networking/strongswan.nix
@@ -32,8 +32,10 @@ let
${caConf}
'';
- strongswanConf = {setup, connections, ca, secrets}: toFile "strongswan.conf" ''
+ strongswanConf = {setup, connections, ca, secrets, managePlugins, enabledPlugins}: toFile "strongswan.conf" ''
charon {
+ ${if managePlugins then "load_modular = no" else ""}
+ ${if managePlugins then ("load = " + (concatStringsSep " " enabledPlugins)) else ""}
plugins {
stroke {
secrets_file = ${ipsecSecrets secrets}
@@ -112,6 +114,25 @@ in
file.
'';
};
+
+ managePlugins = mkOption {
+ type = types.bool;
+ default = false;
+ description = ''
+ If set to true, this option will disable automatic plugin loading and
+ then tell strongSwan to enable the plugins specified in the
+ option.
+ '';
+ };
+
+ enabledPlugins = mkOption {
+ type = types.listOf types.str;
+ default = [];
+ description = ''
+ A list of additional plugins to enable if
+ is true.
+ '';
+ };
};
config = with cfg; mkIf enable {
@@ -122,7 +143,7 @@ in
wants = [ "keys.target" ];
after = [ "network-online.target" "keys.target" ];
environment = {
- STRONGSWAN_CONF = strongswanConf { inherit setup connections ca secrets; };
+ STRONGSWAN_CONF = strongswanConf { inherit setup connections ca secrets managePlugins enabledPlugins; };
};
serviceConfig = {
ExecStart = "${pkgs.strongswan}/sbin/ipsec start --nofork";