summary refs log tree commit diff
diff options
context:
space:
mode:
authorgeistesk <github.jyf300hj@0x21.biz>2017-09-09 00:29:46 +0200
committergeistesk <github.jyf300hj@0x21.biz>2017-09-09 00:29:46 +0200
commit2316f16ac0dc9ae0a384ab25a5f5b5337e8d705e (patch)
tree483d409c3d38d57fb6db3ff0c461b777e5a188f4
parentf84a8fb6050ce60dcc8c1e5ec49b726a07c6b739 (diff)
downloadnixlib-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.nix1
-rw-r--r--nixos/modules/services/networking/fireqos.nix52
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"
+        ];
+      };
+    };
+  };
+}