diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index cd679f8e93c4..9a5aaf108ece 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 3201bd5f8512..3fe8b5be321c 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10595,6 +10595,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; };