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