python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / services / networking / mullvad-vpn.nix
blob7eb3761aad37b36b58665b562e007f1aadb87010
1 { config, lib, pkgs, ... }:
2 let
3   cfg = config.services.mullvad-vpn;
4 in
5 with lib;
7   options.services.mullvad-vpn = {
8     enable = mkOption {
9       type = types.bool;
10       default = false;
11       description = lib.mdDoc ''
12         This option enables Mullvad VPN daemon.
13         This sets {option}`networking.firewall.checkReversePath` to "loose", which might be undesirable for security.
14       '';
15     };
17     package = mkOption {
18       type = types.package;
19       default = pkgs.mullvad;
20       defaultText = literalExpression "pkgs.mullvad";
21       description = lib.mdDoc ''
22         The Mullvad package to use. `pkgs.mullvad` only provides the CLI tool, `pkgs.mullvad-vpn` provides both the CLI and the GUI.
23       '';
24     };
25   };
27   config = mkIf cfg.enable {
28     boot.kernelModules = [ "tun" ];
30     # mullvad-daemon writes to /etc/iproute2/rt_tables
31     networking.iproute2.enable = true;
33     # See https://github.com/NixOS/nixpkgs/issues/113589
34     networking.firewall.checkReversePath = "loose";
36     systemd.services.mullvad-daemon = {
37       description = "Mullvad VPN daemon";
38       wantedBy = [ "multi-user.target" ];
39       wants = [ "network.target" ];
40       after = [
41         "network-online.target"
42         "NetworkManager.service"
43         "systemd-resolved.service"
44       ];
45       path = [
46         pkgs.iproute2
47         # Needed for ping
48         "/run/wrappers"
49       ];
50       startLimitBurst = 5;
51       startLimitIntervalSec = 20;
52       serviceConfig = {
53         ExecStart = "${cfg.package}/bin/mullvad-daemon -v --disable-stdout-timestamps";
54         Restart = "always";
55         RestartSec = 1;
56       };
57     };
58   };
60   meta.maintainers = with maintainers; [ patricksjackson ymarkus ];