ssh: add extraConfig option for non-standard options

This commit is contained in:
Nadrieril 2018-01-10 15:40:07 +00:00 committed by Robert Helgesson
parent c9294e30d9
commit d6ab6ee370
No known key found for this signature in database
GPG key ID: C3DB11069E65DC86

View file

@ -95,6 +95,12 @@ let
default = null; default = null;
description = "The command to use to connect to the server."; description = "The command to use to connect to the server.";
}; };
extraOptions = mkOption {
type = types.attrsOf types.str;
default = {};
description = "Extra configuration options for the host.";
};
}; };
config.host = mkDefault name; config.host = mkDefault name;
@ -113,6 +119,7 @@ let
" ServerAliveInterval ${toString cf.serverAliveInterval}" " ServerAliveInterval ${toString cf.serverAliveInterval}"
++ optional (!cf.checkHostIP) " CheckHostIP no" ++ optional (!cf.checkHostIP) " CheckHostIP no"
++ optional (cf.proxyCommand != null) " ProxyCommand ${cf.proxyCommand}" ++ optional (cf.proxyCommand != null) " ProxyCommand ${cf.proxyCommand}"
++ mapAttrsToList (n: v: " ${n} ${v}") cf.extraOptions
); );
in in
@ -157,6 +164,14 @@ in
''; '';
}; };
extraConfig = mkOption {
type = types.lines;
default = "";
description = ''
Extra configuration.
'';
};
matchBlocks = mkOption { matchBlocks = mkOption {
type = types.loaOf matchBlockModule; type = types.loaOf matchBlockModule;
default = []; default = [];
@ -190,6 +205,8 @@ in
ControlPath ${cfg.controlPath} ControlPath ${cfg.controlPath}
ControlPersist ${cfg.controlPersist} ControlPersist ${cfg.controlPersist}
${cfg.extraConfig}
${concatStringsSep "\n\n" ( ${concatStringsSep "\n\n" (
map matchBlockStr ( map matchBlockStr (
builtins.attrValues cfg.matchBlocks))} builtins.attrValues cfg.matchBlocks))}