Plasma 6 login screen is broken

I just rebuilt my system using the latest version of nixpkgs.
And what I immediately notice is that whether it’s via Wayland, or via X.org, when I try to log in, the screen just freezes rather than transitioning to Plasma 6:

I also notice that the behavior is seemingly identical regardless of whether the credentials are valid or not, giving the impression something is going wrong during validation of credentials.

In addition, rebuilding using the flake.nix I had before the update doesn’t work either, as it yields the same unfortunate results.

So practically speaking, my nixos host is broken in such a way that a rollback likely wouldn’t have any effect either.

Does anyone know how to fix this issue?

1 Like

I just installed GDM and Gnome, and I can log in without issues.

This means that it’s a Plasma6 (or more likely, SDDM) issue.

But that doesn’t tell me why it’s so broken.

EDIT: GDM in combination with Plasma6 works, so it’s almost definitely an issue with SDDM somewhere.

latest version of nixpkgs unstable? i just want to confirm you aren’t mentioning the stable 24.11 release please

Try the workaround from KDE Plasma freezes after entering password on NixOS 24.11 · Issue #360678 · NixOS/nixpkgs · GitHub :

services.displayManager.sddm.wayland.enable = true;

I imagine this happens in unstable as well.

That’s correct. From my flake.nix:

inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable" ;

@eljamm: Wayland is unusable for me because the entire thing is broken w.r.t. input: with both an Apple Trackpad and my Xbox Elite controller I get annoying popups to allow such input devices to do their thing. If that popup was once per session that’d be one thing, but irritatingly it recurs every X minutes, breaking the entire point of remote input devices.
Meanwhile, Plasma6 on X.org exhibits no such deficiency.
And when I tried to talk about it on the KDE forums, the devs ignored what I had to say, which means it won’t be fixed anytime soon, either.

1 Like

From what I understood from the issue above, running SDDM on X11 is broken, but you can still open a Plasma6+X11 session even if SDDM is running Wayland, I imagine. The only thing to do aside from this is run another DM like you did with GDM.

In retrospect there’s an issue with GDM too: it doesn’t provide an option anymore to use X.org, and just dumbly boots into a Wayland session.

So I tried your suggestion, and it kind of works, in that I can actually login to Plasma6 X11 session.
But now SDDM also looks like a broken version of GDM…

Interesting… I don’t know if it’s supposed to do that. You can perhaps try running it in X11 as well:

services.xserver.displayManager.gdm.wayland = false;

You mean like visually or functionally broken?

Well I can’t speak for all the functionality it’s supposed to provide, but I meant visually. It looks like GDM, except the username/password text fields look like they’re not properly styled, even for Gnome/GDM.

I can at least log in — and into an X.org session too — using SDDM + Wayland, so the MVP functionality does work. It’s just really ugly.

2 Likes

I’ll have to try this.

Another note is that if you go to tty console with ctrl+alt+F1, systemctl restart display-manager, the next time you login won’t fail.

I wonder if this is related to session restore since I started having this issue around the time it was introduced, but really don’t know.

I’ve just been restarting the display-manager when this occurs and not had time to investigate further.

1 Like

This happens for me in a multi monitor setup, where both screens show the login prompt (extended, not mirroing) but only the one from my notebook is able to login. If I type the password in the prompt from the external monitor it just freezes.

I’m using nixos-24.11 (24.11.20241203.b681065 (Vicuna)) with:

    services = {
      xserver.enable = true;
      desktopManager.plasma6 = {
        enable = true;
        enableQt5Integration = false;
      };
      displayManager.sddm.enable = true;
    };

Which screen is used shouldn’t matter. It should just work regardless.
That said, the Wayland version of SDDM doesn’t care, as it shouldn’t.

It’s a bug in the theme, not in sddm itself! (No idea where that bug report is at the moment)

If you happen to have this issue and having a secondary (possibly inactive) monitor, here’s a “workaround”: Click into the other monitor, then press tab. Enter your password, press enter.

That’s actually a pretty standard (from my POV, I’ve gotten used to it by now) workaround I’ve been using because SDDM overall (and possibly GDM too) gives the overall impression that the code isn’t all that high quality. And definitely not tested properly.

Something something something volunteer work I guess.

Here’s that bug-report: 494804 – With Qt 6.8 controls to log in or unlock screen are non-functional on some monitors when using the Breeze SDDM or Plasma theme ("TypeError: [thing] is not a function" error)

Same thing happening with me

But for me, when i enter right password. It displays some line of log as it does “info log of policy”

Then it freezes, also can’t change tty. Only force shutdown

And it is freezing, as workaround i login to tty and ran “startplasma-wayland” and it asks me kde6wallet pasword. After that it connect me to wifi and system works

Will try restarting display manager

Also, this started to happen after i installed “ntfs3g”

But it still freezed when I changed to old generation, maybe unrelated or not

I didn’t use any theme

Although this isnt a great fix, this is a fix that will get you passed the login menu. I had to implement this recently as well due to this bug.
It might be worth tryna pin QT6.7 and bumping back to the previous stable version of KDE. I found some success with this but not alot. You might have better luck.

services.displayManager.autoLogin.user = "<name>";

Doing this just bypasses this all together, it just drops you right into desktop.
Heres my whole config for that section for reference:

################################################
###                                          ###
### WINDOW MANAGER SETTINGS/WAYLAND/X11      ###
###                                          ###
################################################
  services.xserver.enable = true;
  services.displayManager.sddm.autoNumlock = true;
  services.displayManager.sddm.enable = true;
  services.displayManager.sddm.wayland.enable = true;
  services.desktopManager.plasma6.enable = true;
  services.displayManager.defaultSession = "plasma";
  services.displayManager.autoLogin.user = "jason";
  hardware.opengl = {
	enable = true;
    extraPackages = with pkgs; [libvdpau-va-gl];


};

  services.xserver.videoDrivers = ["nvidia"];

hardware.nvidia.modesetting.enable = true;
hardware.nvidia.powerManagement.enable = false;
hardware.nvidia.powerManagement.finegrained = false;
hardware.nvidia.open = false;
hardware.nvidia.nvidiaSettings = true;
hardware.nvidia.package = let
rcu_patch = pkgs.fetchpatch {
  url = "https://github.com/gentoo/gentoo/raw/c64caf53/x11-drivers/nvidia-drivers/files/nvidia-drivers-470.223.02-gpl-pfn_valid.patch";
  hash = "sha256-eZiQQp2S/asE7MfGvfe6dA/kdCvek9SYa/FFGp24dVg=";
  };
in config.boot.kernelPackages.nvidiaPackages.mkDriver {

    version = "550.40.07";
    sha256_64bit = "sha256-KYk2xye37v7ZW7h+uNJM/u8fNf7KyGTZjiaU03dJpK0=";
    sha256_aarch64 = "sha256-AV7KgRXYaQGBFl7zuRcfnTGr8rS5n13nGUIe3mJTXb4=";
    openSha256 = "sha256-mRUTEWVsbjq+psVe+kAT6MjyZuLkG2yRDxCMvDJRL1I=";
    settingsSha256 = "sha256-c30AQa4g4a1EHmaEu1yc05oqY01y+IusbBuq+P6rMCs=";
    persistencedSha256 = "sha256-11tLSY8uUIl4X/roNnxf5yS2PQvHvoNjnd2CB67e870=";

    patches = [ rcu_patch ];
 };
nixpkgs.config.allowUnfree = true;
services.locate.enable = true;
hardware.nvidia.forceFullCompositionPipeline = true;

So this solution will log you in, but if your screen goes blank, will it also prevent the credentials screen from being displayed, and just exit the screen blank / screensaver?

Either answer there isn’t perfect I’m afraid, but that might be what you were alluding to with the starting sentence of your post?

When I have my login screen frozen, I manage to go to another tty and do a pkill -9 .kscreenlocker_. Then I’m able to log in again with the login screen.