3
0
Fork 0
forked from mirrors/nixpkgs

Merge pull request #76985 from Elyhaka/gdm_hides_gnome

gdm: refactor to properly handle wayland sessions
This commit is contained in:
worldofpeace 2020-01-18 20:39:07 -05:00 committed by GitHub
commit 765afd38fa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 3 deletions

View file

@ -144,7 +144,7 @@ in
services.gnome3.core-shell.enable = true; services.gnome3.core-shell.enable = true;
services.gnome3.core-utilities.enable = mkDefault true; services.gnome3.core-utilities.enable = mkDefault true;
services.xserver.displayManager.sessionPackages = [ pkgs.gnome3.gnome-session ]; services.xserver.displayManager.sessionPackages = [ pkgs.gnome3.gnome-session.sessions ];
environment.extraInit = '' environment.extraInit = ''
${concatMapStrings (p: '' ${concatMapStrings (p: ''
@ -249,11 +249,17 @@ in
services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true)); services.system-config-printer.enable = (mkIf config.services.printing.enable (mkDefault true));
services.telepathy.enable = mkDefault true; services.telepathy.enable = mkDefault true;
systemd.packages = with pkgs.gnome3; [ vino gnome-session ]; systemd.packages = with pkgs.gnome3; [
gnome-session
gnome-shell
vino
];
services.avahi.enable = mkDefault true; services.avahi.enable = mkDefault true;
xdg.portal.extraPortals = [ pkgs.gnome3.gnome-shell ]; xdg.portal.extraPortals = [
pkgs.gnome3.gnome-shell
];
services.geoclue2.enable = mkDefault true; services.geoclue2.enable = mkDefault true;
services.geoclue2.enableDemoAgent = false; # GNOME has its own geoclue agent services.geoclue2.enableDemoAgent = false; # GNOME has its own geoclue agent

View file

@ -174,6 +174,10 @@ in
"f /run/gdm/.config/gnome-initial-setup-done 0711 gdm gdm - yes" "f /run/gdm/.config/gnome-initial-setup-done 0711 gdm gdm - yes"
]; ];
# Otherwise GDM will not be able to start correctly and display Wayland sessions
systemd.packages = with pkgs.gnome3; [ gnome-session gnome-shell ];
environment.systemPackages = [ pkgs.gnome3.adwaita-icon-theme ];
systemd.services.display-manager.wants = [ systemd.services.display-manager.wants = [
# Because sd_login_monitor_new requires /run/systemd/machines # Because sd_login_monitor_new requires /run/systemd/machines
"systemd-machined.service" "systemd-machined.service"

View file

@ -6,6 +6,8 @@ stdenv.mkDerivation rec {
pname = "gnome-session"; pname = "gnome-session";
version = "3.34.2"; version = "3.34.2";
outputs = ["out" "sessions"];
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/gnome-session/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; url = "mirror://gnome/sources/gnome-session/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "1qgqp97f8k2zi2ydvhds14zsjzfj7cv521r6wx5sw0qacn0p7dwb"; sha256 = "1qgqp97f8k2zi2ydvhds14zsjzfj7cv521r6wx5sw0qacn0p7dwb";
@ -50,6 +52,15 @@ stdenv.mkDerivation rec {
--suffix XDG_CONFIG_DIRS : "${gnome3.gnome-settings-daemon}/etc/xdg" --suffix XDG_CONFIG_DIRS : "${gnome3.gnome-settings-daemon}/etc/xdg"
''; '';
# We move the GNOME sessions to another output since gnome-session is a dependency of
# GDM itself. If we do not hide them, it will show broken GNOME sessions when GDM is
# enabled without proper GNOME installation.
postInstall = ''
mkdir $sessions
moveToOutput share/wayland-sessions "$sessions"
moveToOutput share/xsessions "$sessions"
'';
passthru = { passthru = {
updateScript = gnome3.updateScript { updateScript = gnome3.updateScript {
packageName = "gnome-session"; packageName = "gnome-session";