python312Packages.aiohomeconnect: 0.10.0 -> 0.11.0 (#374011)
[NixPkgs.git] / nixos / modules / services / networking / ivpn.nix
blob7bf96d38afbe4f0a59f124ce3924c15b7219307e
2   config,
3   lib,
4   pkgs,
5   ...
6 }:
7 let
8   cfg = config.services.ivpn;
9 in
11   options.services.ivpn = {
12     enable = lib.mkOption {
13       type = lib.types.bool;
14       default = false;
15       description = ''
16         This option enables iVPN daemon.
17         This sets {option}`networking.firewall.checkReversePath` to "loose", which might be undesirable for security.
18       '';
19     };
20   };
22   config = lib.mkIf cfg.enable {
23     boot.kernelModules = [ "tun" ];
25     environment.systemPackages = with pkgs; [
26       ivpn
27       ivpn-service
28     ];
30     # iVPN writes to /etc/iproute2/rt_tables
31     networking.iproute2.enable = true;
32     networking.firewall.checkReversePath = "loose";
34     systemd.services.ivpn-service = {
35       description = "iVPN daemon";
36       wantedBy = [ "multi-user.target" ];
37       wants = [
38         "network.target"
39         "network-online.target"
40       ];
41       after = [
42         "network-online.target"
43         "NetworkManager.service"
44         "systemd-resolved.service"
45       ];
46       path = [
47         # Needed for mount
48         "/run/wrappers"
49       ];
50       startLimitBurst = 5;
51       startLimitIntervalSec = 20;
52       serviceConfig = {
53         ExecStart = "${pkgs.ivpn-service}/bin/ivpn-service --logging";
54         Restart = "always";
55         RestartSec = 1;
56       };
57     };
58   };
60   meta.maintainers = with lib.maintainers; [ ataraxiasjel ];