From 8f87a0e6460a50dd703ee96fe2df22823ba0f5a6 Mon Sep 17 00:00:00 2001 From: K900 Date: Fri, 27 Mar 2026 14:47:51 +0300 Subject: [PATCH 1/2] kdePackages.plasma-workspace: move sessions to separate output So they don't leak into p-l-m via the wrapper. --- nixos/modules/services/desktop-managers/plasma6.nix | 2 +- pkgs/kde/plasma/plasma-workspace/default.nix | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/nixos/modules/services/desktop-managers/plasma6.nix b/nixos/modules/services/desktop-managers/plasma6.nix index 0520182be2f3..1d588bd5de72 100644 --- a/nixos/modules/services/desktop-managers/plasma6.nix +++ b/nixos/modules/services/desktop-managers/plasma6.nix @@ -300,7 +300,7 @@ in services.orca.enable = mkDefault true; services.displayManager = { - sessionPackages = [ kdePackages.plasma-workspace ]; + sessionPackages = [ kdePackages.plasma-workspace.sessions ]; defaultSession = mkDefault "plasma"; }; services.displayManager.sddm = { diff --git a/pkgs/kde/plasma/plasma-workspace/default.nix b/pkgs/kde/plasma/plasma-workspace/default.nix index e3a707499c40..964525c99c9f 100644 --- a/pkgs/kde/plasma/plasma-workspace/default.nix +++ b/pkgs/kde/plasma/plasma-workspace/default.nix @@ -39,6 +39,13 @@ mkKdeDerivation { }) ]; + outputs = [ + "out" + "dev" + "devtools" + "sessions" + ]; + postInstall = '' # Prevent patching this shell file, it only is used by sourcing it from /bin/sh. chmod -x $out/libexec/plasma-sourceenv.sh @@ -83,6 +90,9 @@ mkKdeDerivation { postFixup = '' mkdir -p $out/nix-support echo "${lsof} ${xmessage} ${xrdb}" > $out/nix-support/depends + + moveToOutput share/xsessions $sessions + moveToOutput share/wayland-sessions $sessions ''; passthru.providedSessions = [ From 4be57b07f9a4e363bb8a72e9503fce6ecf1ce692 Mon Sep 17 00:00:00 2001 From: K900 Date: Fri, 27 Mar 2026 14:48:21 +0300 Subject: [PATCH 2/2] nixos/plasma-login-manager: set XDG_DATA_DIRS correctly This should ensure all the sessions are found by both the daemon and the greeter. --- .../services/display-managers/plasma-login-manager.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/nixos/modules/services/display-managers/plasma-login-manager.nix b/nixos/modules/services/display-managers/plasma-login-manager.nix index 2101873bad93..8bfcfc37f4f7 100644 --- a/nixos/modules/services/display-managers/plasma-login-manager.nix +++ b/nixos/modules/services/display-managers/plasma-login-manager.nix @@ -65,6 +65,16 @@ in path = [ cfg.package ]; wantedBy = [ "graphical.target" ]; restartIfChanged = false; + environment.XDG_DATA_DIRS = lib.mkIf ( + dmcfg.sessionPackages != [ ] + ) "${dmcfg.sessionData.desktops}/share"; + }; + + systemd.user.services.plasma-login = { + overrideStrategy = "asDropin"; + environment.XDG_DATA_DIRS = lib.mkIf ( + dmcfg.sessionPackages != [ ] + ) "${dmcfg.sessionData.desktops}/share"; }; systemd.defaultUnit = "graphical.target";