From 23b3b3ff393252d4433ed330fb4a4a2dd6785a73 Mon Sep 17 00:00:00 2001 From: Sergei Poljanski Date: Fri, 16 Oct 2026 13:52:56 +0400 Subject: [PATCH] packages: run KUnifiedPush as the UnifiedPush distributor another.im (and any UnifiedPush app) is woken by its server for each message only while a distributor runs on the session bus; GNOME has none, so the app reported "no UnifiedPush distributor" and missed messages once quit. KUnifiedPush's distributor needs no Plasma and uses KDE's ntfy server by default. Its unit ships in share/systemd/user, which systemd.packages does not read, so the user service is written out here as the package's own (26.04), started with the graphical session. Assisted-by: Claude:opus-5-5 --- modules/packages.nix | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/modules/packages.nix b/modules/packages.nix index 6daba79..35b5c21 100644 --- a/modules/packages.nix +++ b/modules/packages.nix @@ -142,6 +142,26 @@ gnomeExtensions.tlp-profile-switcher ]; + # UnifiedPush distributor, so a server can wake push-capable apps + # (another.im) after they have quit. KUnifiedPush defaults to KDE's ntfy + # server; System Settings' "Push Notifications" page (kcm_push_notifications) + # picks another. Its own unit is in share/systemd/user, which systemd.packages + # does not read, so it is written out here (the package's, as of 26.04). + systemd.user.services.kunifiedpush-distributor = { + description = "KUnifiedPush Distributor"; + partOf = [ "graphical-session.target" ]; + after = [ "graphical-session.target" ]; + wantedBy = [ "graphical-session.target" ]; + serviceConfig = { + ExecStart = "${pkgs.kdePackages.kunifiedpush}/bin/kunifiedpush-distributor"; + Type = "exec"; + BusName = "org.unifiedpush.Distributor.kde"; + TimeoutStopSec = "5sec"; + Slice = "background.slice"; + Restart = "on-failure"; + }; + }; + # PC/SC daemon — middleware for the smart card reader (Estonian ID) services.pcscd.enable = true;