dotnet: improve language coverage of passthru.tests for dotnet sdks (#370789)
[NixPkgs.git] / nixos / modules / services / networking / globalprotect-vpn.nix
blob626a9cd0130d442cae1ae7ca1e1027643b63e4b2
2   config,
3   lib,
4   pkgs,
5   ...
6 }:
7 let
8   cfg = config.services.globalprotect;
10   execStart =
11     if cfg.csdWrapper == null then
12       "${pkgs.globalprotect-openconnect}/bin/gpservice"
13     else
14       "${pkgs.globalprotect-openconnect}/bin/gpservice --csd-wrapper=${cfg.csdWrapper}";
18   options.services.globalprotect = {
19     enable = lib.mkEnableOption "globalprotect";
21     settings = lib.mkOption {
22       description = ''
23         GlobalProtect-openconnect configuration. For more information, visit
24         <https://github.com/yuezk/GlobalProtect-openconnect/wiki/Configuration>.
25       '';
26       default = { };
27       example = {
28         "vpn1.company.com" = {
29           openconnect-args = "--script=/path/to/vpnc-script";
30         };
31       };
32       type = lib.types.attrs;
33     };
35     csdWrapper = lib.mkOption {
36       description = ''
37         A script that will produce a Host Integrity Protection (HIP) report,
38         as described at <https://www.infradead.org/openconnect/hip.html>
39       '';
40       default = null;
41       example = lib.literalExpression ''"''${pkgs.openconnect}/libexec/openconnect/hipreport.sh"'';
42       type = lib.types.nullOr lib.types.path;
43     };
44   };
46   config = lib.mkIf cfg.enable {
47     services.dbus.packages = [ pkgs.globalprotect-openconnect ];
49     environment.etc."gpservice/gp.conf".text = lib.generators.toINI { } cfg.settings;
51     systemd.services.gpservice = {
52       description = "GlobalProtect openconnect DBus service";
53       serviceConfig = {
54         Type = "dbus";
55         BusName = "com.yuezk.qt.GPService";
56         ExecStart = execStart;
57       };
58       wantedBy = [ "multi-user.target" ];
59       after = [ "network.target" ];
60     };
61   };