Change SSDM theme - Am I doing it right?


I wanted to change the login theme of “sddm”. With my experience, I have now solved this as follows:

  • Disable original sddm module
  • Import mod. theme
  • Import modified sddm file

Is this the “right” way or is there a simpler “nix” one? It works but it seems a bit complicated to me, especially for beginners.



Hi, no tip or advice?

No need to override the module, that’s a very big hammer! You can just install the theme and set the module option:

services.xserver.displayManager.sddm.theme = "abstractdark-sddm-theme";
environment.systemPackages = 
    let abstractdark pkgs.callPackage ./packages/mysddmtheme {}; in [ abstractDark];

Are you sure? Your variant doesn’t work for me. After “nixos-rebuild switch”:



There is no “abstractdark-sddm-theme” folder in “/run/current-system/sw/share/sddm/themes”.

total 12
dr-xr-xr-x 3 root root 4096 Jan  1  1970 elarun
dr-xr-xr-x 2 root root 4096 Jan  1  1970 maldives
dr-xr-xr-x 6 root root 4096 Jan  1  1970 maya

Now I have the standard layout again.

“ThemeDir=” must also be adapted. But there is no option for that.

“ThemeDir=” must also be adapted. But there is no option for that.

No, that’s the nixos system theme dir. Installing a theme package should put its files there. This is how we handle things like themes in NixOS: we point the program at a system directory, and then populate that with appropriate files from installed system packages.

The problem is that your theme package doesn’t put its files where it’s expected to (so that we realise that it has “appropriate files”). It needs to put them under $out/share/sddm/themes. Here is an example from my config.


How’s a rookie supposed to know that?

I’m going to rewrite the theme to meet the standard.

Many thanks for your input! :slight_smile:

1 Like