diff options
author | geistesk <github.jyf300hj@0x21.biz> | 2017-09-09 00:29:46 +0200 |
---|---|---|
committer | geistesk <github.jyf300hj@0x21.biz> | 2017-09-09 00:29:46 +0200 |
commit | 2316f16ac0dc9ae0a384ab25a5f5b5337e8d705e (patch) | |
tree | 483d409c3d38d57fb6db3ff0c461b777e5a188f4 | |
parent | f84a8fb6050ce60dcc8c1e5ec49b726a07c6b739 (diff) | |
download | nixlib-2316f16ac0dc9ae0a384ab25a5f5b5337e8d705e.tar nixlib-2316f16ac0dc9ae0a384ab25a5f5b5337e8d705e.tar.gz nixlib-2316f16ac0dc9ae0a384ab25a5f5b5337e8d705e.tar.bz2 nixlib-2316f16ac0dc9ae0a384ab25a5f5b5337e8d705e.tar.lz nixlib-2316f16ac0dc9ae0a384ab25a5f5b5337e8d705e.tar.xz nixlib-2316f16ac0dc9ae0a384ab25a5f5b5337e8d705e.tar.zst nixlib-2316f16ac0dc9ae0a384ab25a5f5b5337e8d705e.zip |
nixos/fireqos: add service
-rw-r--r-- | nixos/modules/module-list.nix | 1 | ||||
-rw-r--r-- | nixos/modules/services/networking/fireqos.nix | 52 |
2 files changed, 53 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index a46448b94378..fd45418a80a0 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -429,6 +429,7 @@ ./services/networking/fakeroute.nix ./services/networking/ferm.nix ./services/networking/firefox/sync-server.nix + ./services/networking/fireqos.nix ./services/networking/firewall.nix ./services/networking/flannel.nix ./services/networking/flashpolicyd.nix diff --git a/nixos/modules/services/networking/fireqos.nix b/nixos/modules/services/networking/fireqos.nix new file mode 100644 index 000000000000..0b34f0b6b8b4 --- /dev/null +++ b/nixos/modules/services/networking/fireqos.nix @@ -0,0 +1,52 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.fireqos; + fireqosConfig = pkgs.writeText "fireqos.conf" "${cfg.config}"; +in { + options.services.fireqos = { + enable = mkOption { + type = types.bool; + default = false; + description = '' + If enabled, FireQOS will be launched with the specified + configuration given in `config`. + ''; + }; + + config = mkOption { + type = types.str; + default = ""; + example = '' + interface wlp3s0 world-in input rate 10mbit ethernet + class web commit 50kbit + match tcp ports 80,443 + + interface wlp3s0 world-out input rate 10mbit ethernet + class web commit 50kbit + match tcp ports 80,443 + ''; + description = '' + The FireQOS configuration goes here. + ''; + }; + }; + + config = mkIf cfg.enable { + systemd.services.fireqos = { + description = "FireQOS"; + after = [ "network.target" ]; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + ExecStart = "${pkgs.firehol}/bin/fireqos start ${fireqosConfig}"; + ExecStop = [ + "${pkgs.firehol}/bin/fireqos stop" + "${pkgs.firehol}/bin/fireqos clear_all_qos" + ]; + }; + }; + }; +} |