summary refs log tree commit diff
path: root/nixos/modules/services/x11/display-managers/sddm.nix
diff options
context:
space:
mode:
authorPeter Hoeg <peter@hoeg.com>2018-07-09 14:51:05 +0800
committerPeter Hoeg <peter@hoeg.com>2018-07-09 14:51:05 +0800
commitcd4e54b3a11451fd5e03297790b3d3a00a08e188 (patch)
tree1f0c68e77c09b15e185f0b006bc6b8ec137fb9b6 /nixos/modules/services/x11/display-managers/sddm.nix
parent2a8a5533d18b22ed983a1fe526ec16b801cbcd97 (diff)
downloadnixpkgs-cd4e54b3a11451fd5e03297790b3d3a00a08e188.tar
nixpkgs-cd4e54b3a11451fd5e03297790b3d3a00a08e188.tar.gz
nixpkgs-cd4e54b3a11451fd5e03297790b3d3a00a08e188.tar.bz2
nixpkgs-cd4e54b3a11451fd5e03297790b3d3a00a08e188.tar.lz
nixpkgs-cd4e54b3a11451fd5e03297790b3d3a00a08e188.tar.xz
nixpkgs-cd4e54b3a11451fd5e03297790b3d3a00a08e188.tar.zst
nixpkgs-cd4e54b3a11451fd5e03297790b3d3a00a08e188.zip
sddm: use tmpfiles.d to wipe QML cache
Diffstat (limited to 'nixos/modules/services/x11/display-managers/sddm.nix')
-rw-r--r--nixos/modules/services/x11/display-managers/sddm.nix26
1 files changed, 15 insertions, 11 deletions
diff --git a/nixos/modules/services/x11/display-managers/sddm.nix b/nixos/modules/services/x11/display-managers/sddm.nix
index 8db7414e811..426b899586f 100644
--- a/nixos/modules/services/x11/display-managers/sddm.nix
+++ b/nixos/modules/services/x11/display-managers/sddm.nix
@@ -19,17 +19,6 @@ let
 
   Xsetup = pkgs.writeScript "Xsetup" ''
     #!/bin/sh
-
-    # Prior to Qt 5.9.2, there is a QML cache invalidation bug which sometimes
-    # strikes new Plasma 5 releases. If the QML cache is not invalidated, SDDM
-    # will segfault without explanation. We really tore our hair out for awhile
-    # before finding the bug:
-    # https://bugreports.qt.io/browse/QTBUG-62302
-    # We work around the problem by deleting the QML cache before startup. It
-    # will be regenerated, causing a small but perceptible delay when SDDM
-    # starts.
-    rm -fr /var/lib/sddm/.cache/sddm-greeter/qmlcache
-
     ${cfg.setupScript}
   '';
 
@@ -285,5 +274,20 @@ in
     # To enable user switching, allow sddm to allocate TTYs/displays dynamically.
     services.xserver.tty = null;
     services.xserver.display = null;
+
+    systemd.tmpfiles.rules = [
+      # Prior to Qt 5.9.2, there is a QML cache invalidation bug which sometimes
+      # strikes new Plasma 5 releases. If the QML cache is not invalidated, SDDM
+      # will segfault without explanation. We really tore our hair out for awhile
+      # before finding the bug:
+      # https://bugreports.qt.io/browse/QTBUG-62302
+      # We work around the problem by deleting the QML cache before startup.
+      # This was supposedly fixed in Qt 5.9.2 however it has been reported with
+      # 5.10 and 5.11 as well. The initial workaround was to delete the directory
+      # in the Xsetup script but that doesn't do anything.
+      # Instead we use tmpfiles.d to ensure it gets wiped.
+      # This causes a small but perceptible delay when SDDM starts.
+      "e ${config.users.users.sddm.home}/.cache - - - 0"
+    ];
   };
 }