summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--nixos/modules/module-list.nix1
-rw-r--r--nixos/modules/services/monitoring/das_watchdog.nix34
-rw-r--r--pkgs/tools/system/das_watchdog/default.nix32
-rw-r--r--pkgs/top-level/all-packages.nix2
4 files changed, 69 insertions, 0 deletions
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index 2870a259adb1..25633bae169a 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -222,6 +222,7 @@
   ./services/monitoring/bosun.nix
   ./services/monitoring/cadvisor.nix
   ./services/monitoring/collectd.nix
+  ./services/monitoring/das_watchdog.nix
   ./services/monitoring/dd-agent.nix
   ./services/monitoring/graphite.nix
   ./services/monitoring/monit.nix
diff --git a/nixos/modules/services/monitoring/das_watchdog.nix b/nixos/modules/services/monitoring/das_watchdog.nix
new file mode 100644
index 000000000000..785b4289dff4
--- /dev/null
+++ b/nixos/modules/services/monitoring/das_watchdog.nix
@@ -0,0 +1,34 @@
+# A general watchdog for the linux operating system that should run in the
+# background at all times to ensure a realtime process won't hang the machine
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+  inherit (pkgs) das_watchdog;
+
+in {
+  ###### interface
+
+  options = {
+    services.das_watchdog.enable = mkEnableOption "Whether to enable realtime watchdog";
+  };
+
+  ###### implementation
+
+  config = mkIf config.services.das_watchdog.enable {
+    environment.systemPackages = [ das_watchdog ];
+    systemd.services.das_watchdog = {
+      description = "Watchdog to ensure a realtime process won't hang the machine";
+      after = [ "multi-user.target" "sound.target" ];
+      wantedBy = [ "multi-user.target" ];
+      serviceConfig = {
+        User = "root";
+        Type = "oneshot";
+        ExecStart = "${das_watchdog}/bin/das_watchdog";
+        RemainAfterExit = true;
+      };
+    };
+  };
+}
diff --git a/pkgs/tools/system/das_watchdog/default.nix b/pkgs/tools/system/das_watchdog/default.nix
new file mode 100644
index 000000000000..465ae48063b8
--- /dev/null
+++ b/pkgs/tools/system/das_watchdog/default.nix
@@ -0,0 +1,32 @@
+{ stdenv, fetchgit, libgtop, xmessage, which, pkgconfig }:
+
+stdenv.mkDerivation rec {
+  name = "das_watchdog-${version}";
+  version = "git-2015-04-02";
+
+  src = fetchgit {
+    url = "https://github.com/kmatheussen/das_watchdog.git";
+    rev = "1c203d9a55455c4670c164f945ea2dd9fd197ba9";
+    sha256 = "c817491d67d31297dcd6177b9c33b5c3977c1c383eac588026631dd6961ba6bf";
+  };
+
+  buildInputs = [ libgtop xmessage which pkgconfig ];
+
+  installPhase = ''
+    mkdir -p $out/bin/
+    cp das_watchdog $out/bin/
+    cp test_rt $out/bin/
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = https://github.com/kmatheussen/das_watchdog;
+    description = "A general watchdog for the linux operating system";
+    longDescription = ''
+      It should run in the background at all times to ensure a realtime process
+      won't hang the machine.";
+    '';
+    license = licenses.free;
+    maintainers = [ maintainers.magnetophon ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 16db1ee43d4f..4e0b677eff1c 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -10664,6 +10664,8 @@ let
     inherit (gnome) GConf libglade;
   };
 
+  das_watchdog = callPackage ../tools/system/das_watchdog { };
+
   dbvisualizer = callPackage ../applications/misc/dbvisualizer {};
 
   dd-agent = callPackage ../tools/networking/dd-agent { inherit (pythonPackages) tornado; };