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/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"; 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 = [