vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / networking / doh-proxy-rust.nix
blob32b7a3750480a77a4d8f70736222b72e64fcb990
1 { config, lib, pkgs, ... }:
2 let
4   cfg = config.services.doh-proxy-rust;
6 in {
8   options.services.doh-proxy-rust = {
10     enable = lib.mkEnableOption "doh-proxy-rust";
12     flags = lib.mkOption {
13       type = lib.types.listOf lib.types.str;
14       default = [];
15       example = [ "--server-address=9.9.9.9:53" ];
16       description = ''
17         A list of command-line flags to pass to doh-proxy. For details on the
18         available options, see <https://github.com/jedisct1/doh-server#usage>.
19       '';
20     };
22   };
24   config = lib.mkIf cfg.enable {
25     systemd.services.doh-proxy-rust = {
26       description = "doh-proxy-rust";
27       after = [ "network.target" "nss-lookup.target" ];
28       wantedBy = [ "multi-user.target" ];
29       serviceConfig = {
30         ExecStart = "${pkgs.doh-proxy-rust}/bin/doh-proxy ${lib.escapeShellArgs cfg.flags}";
31         Restart = "always";
32         RestartSec = 10;
33         DynamicUser = true;
35         CapabilityBoundingSet = "";
36         LockPersonality = true;
37         MemoryDenyWriteExecute = true;
38         NoNewPrivileges = true;
39         ProtectClock = true;
40         ProtectHome = true;
41         ProtectHostname = true;
42         ProtectKernelLogs = true;
43         RemoveIPC = true;
44         RestrictAddressFamilies = "AF_INET AF_INET6";
45         RestrictNamespaces = true;
46         RestrictRealtime = true;
47         RestrictSUIDSGID = true;
48         SystemCallArchitectures = "native";
49         SystemCallErrorNumber = "EPERM";
50         SystemCallFilter = [ "@system-service" "~@privileged @resources" ];
51       };
52     };
53   };
55   meta.maintainers = with lib.maintainers; [ stephank ];