diff options
author | oxalica <oxalicc@pm.me> | 2020-05-25 23:13:55 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-25 10:13:55 -0500 |
commit | fe3e52c29154d8b8549f58dbd296ba373b7b803d (patch) | |
tree | 7c708676dadd94e788d2aaf06aabd18401b77919 | |
parent | f1d9510c991daad405ce17f5a4ca38b2db5146a9 (diff) |
earlyoom: patch absolute dbus path and make nixos module up to date (#88443)
* earlyoom: patch absolute path of dbus-send * nixos/earlyoom: replace `notificationsCommand` with `enableNotification` * nixos/earlyoom: setup `systembus-notify` when `enableNotification`
-rw-r--r-- | nixos/modules/services/system/earlyoom.nix | 23 | ||||
-rw-r--r-- | pkgs/os-specific/linux/earlyoom/default.nix | 2 | ||||
-rw-r--r-- | pkgs/os-specific/linux/earlyoom/fix-dbus-path.patch | 11 |
3 files changed, 32 insertions, 4 deletions
diff --git a/nixos/modules/services/system/earlyoom.nix b/nixos/modules/services/system/earlyoom.nix index 39d1bf274bd2b..c6a001d30eeb3 100644 --- a/nixos/modules/services/system/earlyoom.nix +++ b/nixos/modules/services/system/earlyoom.nix @@ -67,9 +67,19 @@ in notificationsCommand = mkOption { type = types.nullOr types.str; default = null; - example = "sudo -u example_user DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send"; description = '' - Command used to send notifications. + This option is deprecated and ignored by earlyoom since 1.6. + Use <option>services.earlyoom.enableNotifications</option> instead. + ''; + }; + + enableNotifications = mkOption { + type = types.bool; + default = false; + description = '' + Send notifications about killed processes via the system d-bus. + To actually see the notifications in your GUI session, you need to have + <literal>systembus-notify</literal> running as your user. See <link xlink:href="https://github.com/rfjakob/earlyoom#notifications">README</link> for details. ''; @@ -87,9 +97,13 @@ in message = "Both options in conjunction do not make sense"; } ]; + warnings = optional (ecfg.notificationsCommand != null) + "`services.earlyoom.notificationsCommand` is deprecated and ignored by earlyoom since 1.6."; + systemd.services.earlyoom = { description = "Early OOM Daemon for Linux"; wantedBy = [ "multi-user.target" ]; + path = optional ecfg.enableNotifications pkgs.dbus; serviceConfig = { StandardOutput = "null"; StandardError = "syslog"; @@ -100,10 +114,11 @@ in ${optionalString ecfg.useKernelOOMKiller "-k"} \ ${optionalString ecfg.ignoreOOMScoreAdjust "-i"} \ ${optionalString ecfg.enableDebugInfo "-d"} \ - ${optionalString (ecfg.notificationsCommand != null) - "-N ${escapeShellArg ecfg.notificationsCommand}"} + ${optionalString ecfg.enableNotifications "-n"} ''; }; }; + + environment.systemPackages = optional ecfg.enableNotifications pkgs.systembus-notify; }; } diff --git a/pkgs/os-specific/linux/earlyoom/default.nix b/pkgs/os-specific/linux/earlyoom/default.nix index 2e0f5ef783306..8233c065c2b44 100644 --- a/pkgs/os-specific/linux/earlyoom/default.nix +++ b/pkgs/os-specific/linux/earlyoom/default.nix @@ -13,6 +13,8 @@ stdenv.mkDerivation rec { nativeBuildInputs = stdenv.lib.optionals withManpage [ pandoc installShellFiles ]; + patches = [ ./fix-dbus-path.patch ]; + makeFlags = [ "VERSION=${version}" ]; installPhase = '' diff --git a/pkgs/os-specific/linux/earlyoom/fix-dbus-path.patch b/pkgs/os-specific/linux/earlyoom/fix-dbus-path.patch new file mode 100644 index 0000000000000..e1c10cf82f96e --- /dev/null +++ b/pkgs/os-specific/linux/earlyoom/fix-dbus-path.patch @@ -0,0 +1,11 @@ +--- a/kill.c ++++ b/kill.c +@@ -55,7 +55,7 @@ static void notify(const char* summary, const char* body) + } + // Complete command line looks like this: + // dbus-send --system / net.nuetzlich.SystemNotifications.Notify 'string:summary text' 'string:and body text' +- execl("/usr/bin/dbus-send", "dbus-send", "--system", "/", "net.nuetzlich.SystemNotifications.Notify", ++ execlp("dbus-send", "dbus-send", "--system", "/", "net.nuetzlich.SystemNotifications.Notify", + summary2, body2, NULL); + warn("notify: exec failed: %s\n", strerror(errno)); + exit(1); |