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`
This commit is contained in:
parent
f1d9510c99
commit
fe3e52c291
@ -67,9 +67,19 @@ in
|
|||||||
notificationsCommand = mkOption {
|
notificationsCommand = mkOption {
|
||||||
type = types.nullOr types.str;
|
type = types.nullOr types.str;
|
||||||
default = null;
|
default = null;
|
||||||
example = "sudo -u example_user DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send";
|
|
||||||
description = ''
|
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.
|
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"; }
|
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 = {
|
systemd.services.earlyoom = {
|
||||||
description = "Early OOM Daemon for Linux";
|
description = "Early OOM Daemon for Linux";
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
path = optional ecfg.enableNotifications pkgs.dbus;
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
StandardOutput = "null";
|
StandardOutput = "null";
|
||||||
StandardError = "syslog";
|
StandardError = "syslog";
|
||||||
@ -100,10 +114,11 @@ in
|
|||||||
${optionalString ecfg.useKernelOOMKiller "-k"} \
|
${optionalString ecfg.useKernelOOMKiller "-k"} \
|
||||||
${optionalString ecfg.ignoreOOMScoreAdjust "-i"} \
|
${optionalString ecfg.ignoreOOMScoreAdjust "-i"} \
|
||||||
${optionalString ecfg.enableDebugInfo "-d"} \
|
${optionalString ecfg.enableDebugInfo "-d"} \
|
||||||
${optionalString (ecfg.notificationsCommand != null)
|
${optionalString ecfg.enableNotifications "-n"}
|
||||||
"-N ${escapeShellArg ecfg.notificationsCommand}"}
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = optional ecfg.enableNotifications pkgs.systembus-notify;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,8 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
nativeBuildInputs = stdenv.lib.optionals withManpage [ pandoc installShellFiles ];
|
nativeBuildInputs = stdenv.lib.optionals withManpage [ pandoc installShellFiles ];
|
||||||
|
|
||||||
|
patches = [ ./fix-dbus-path.patch ];
|
||||||
|
|
||||||
makeFlags = [ "VERSION=${version}" ];
|
makeFlags = [ "VERSION=${version}" ];
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
|
11
pkgs/os-specific/linux/earlyoom/fix-dbus-path.patch
Normal file
11
pkgs/os-specific/linux/earlyoom/fix-dbus-path.patch
Normal file
@ -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);
|
Loading…
Reference in New Issue
Block a user