diff --git a/nixos/modules/services/x11/desktop-managers/xfce.nix b/nixos/modules/services/x11/desktop-managers/xfce.nix index a08b1947f65b..21f59074f3ae 100644 --- a/nixos/modules/services/x11/desktop-managers/xfce.nix +++ b/nixos/modules/services/x11/desktop-managers/xfce.nix @@ -127,14 +127,9 @@ in "/share/gtksourceview-4.0" ]; - services.xserver.desktopManager.session = [{ - name = "xfce"; - bgSupport = true; - start = '' - ${pkgs.runtimeShell} ${pkgs.xfce.xfce4-session.xinitrc} & - waitPID=$! - ''; - }]; + services.xserver.displayManager.sessionPackages = [ + pkgs.xfce.xfce4-session + ]; services.xserver.updateDbusEnvironment = true; services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ]; diff --git a/pkgs/desktops/xfce/core/xfce4-session/default.nix b/pkgs/desktops/xfce/core/xfce4-session/default.nix index 0ab362aa21d0..f97c07156c58 100644 --- a/pkgs/desktops/xfce/core/xfce4-session/default.nix +++ b/pkgs/desktops/xfce/core/xfce4-session/default.nix @@ -1,4 +1,4 @@ -{ mkXfceDerivation, polkit, exo, libxfce4util, libxfce4ui, xfconf, iceauth, gtk3, glib, libwnck3, xorg, xfce4-session }: +{ mkXfceDerivation, polkit, exo, libxfce4util, libxfce4ui, xfconf, iceauth, gtk3, glib, libwnck3, xorg, xfce4-session, runtimeShell }: mkXfceDerivation { category = "xfce"; @@ -14,9 +14,25 @@ mkXfceDerivation { # See https://github.com/NixOS/nixpkgs/issues/36468 NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0"; - passthru.xinitrc = "${xfce4-session}/etc/xdg/xfce4/xinitrc"; + # Don't use startxfce4 in xfce.desktop + # It's has FHS isms + postFixup = '' + chmod +x $out/etc/xdg/xfce4/xinitrc + patchShebangs $out/etc/xdg/xfce4/xinitrc - meta = { + substituteInPlace "$out/share/xsessions/xfce.desktop" \ + --replace "Exec=startxfce4" "Exec=$out/etc/xdg/xfce4/xinitrc" + ''; + + passthru = { + xinitrc = "${xfce4-session}/etc/xdg/xfce4/xinitrc"; + + providedSessions = [ + "xfce" + ]; + }; + + meta = { description = "Session manager for Xfce"; }; }