vuls: init at 0.27.0
[NixPkgs.git] / nixos / modules / services / networking / fireqos.nix
blobaa7d8c2c03efb6662c45802499322f38b116b68f
1 { config, lib, pkgs, ... }:
2 let
3   cfg = config.services.fireqos;
4   fireqosConfig = pkgs.writeText "fireqos.conf" "${cfg.config}";
5 in {
6   options.services.fireqos = {
7     enable = lib.mkOption {
8       type = lib.types.bool;
9       default = false;
10       description = ''
11         If enabled, FireQOS will be launched with the specified
12         configuration given in `config`.
13       '';
14     };
16     config = lib.mkOption {
17       type = lib.types.str;
18       default = "";
19       example = ''
20         interface wlp3s0 world-in input rate 10mbit ethernet
21           class web commit 50kbit
22             match tcp ports 80,443
24         interface wlp3s0 world-out input rate 10mbit ethernet
25           class web commit 50kbit
26             match tcp ports 80,443
27       '';
28       description = ''
29         The FireQOS configuration goes here.
30       '';
31     };
32   };
34   config = lib.mkIf cfg.enable {
35     systemd.services.fireqos = {
36       description = "FireQOS";
37       after = [ "network.target" ];
38       serviceConfig = {
39         Type = "oneshot";
40         RemainAfterExit = true;
41         ExecStart = "${pkgs.firehol}/bin/fireqos start ${fireqosConfig}";
42         ExecStop = [
43           "${pkgs.firehol}/bin/fireqos stop"
44           "${pkgs.firehol}/bin/fireqos clear_all_qos"
45         ];
46       };
47     };
48   };