diff --git a/pkgs/desktops/gnome/core/gnome-session/ctl.nix b/pkgs/desktops/gnome/core/gnome-session/ctl.nix index 6a274e35bf56..7ee9e156e5bb 100644 --- a/pkgs/desktops/gnome/core/gnome-session/ctl.nix +++ b/pkgs/desktops/gnome/core/gnome-session/ctl.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation rec { pname = "gnome-session-ctl"; - version = "40.0"; + version = "41.3"; src = fetchFromGitHub { owner = "nix-community"; repo = pname; rev = version; - hash = "sha256-gvBmLx8Qoj1vPsOwaZsd9+pTDvU5D7uUts7ZT1pXwNo="; + hash = "sha256-aC0tkTf2lgCRlcbFj1FEOVBm3YUuP+8Yz98W3ZjUydg="; }; nativeBuildInputs = [ diff --git a/pkgs/desktops/gnome/core/gnome-session/default.nix b/pkgs/desktops/gnome/core/gnome-session/default.nix index 3ba6958fad0e..3c6903b2b01b 100644 --- a/pkgs/desktops/gnome/core/gnome-session/default.nix +++ b/pkgs/desktops/gnome/core/gnome-session/default.nix @@ -1,16 +1,42 @@ -{ fetchurl, lib, stdenv, substituteAll, meson, ninja, pkg-config, gnome, glib, gtk3, gsettings-desktop-schemas -, gnome-desktop, dbus, json-glib, libICE, xmlto, docbook_xsl, docbook_xml_dtd_412, python3 -, libxslt, gettext, makeWrapper, systemd, xorg, libepoxy, gnugrep, bash, gnome-session-ctl }: +{ fetchurl +, lib +, stdenv +, substituteAll +, meson +, ninja +, pkg-config +, gnome +, glib +, gtk3 +, gsettings-desktop-schemas +, gnome-desktop +, dbus +, json-glib +, libICE +, xmlto +, docbook_xsl +, docbook_xml_dtd_412 +, python3 +, libxslt +, gettext +, makeWrapper +, systemd +, xorg +, libepoxy +, bash +, gnome-session-ctl +}: stdenv.mkDerivation rec { pname = "gnome-session"; - version = "40.1.1"; + # Also bump ./ctl.nix when bumping major version. + version = "41.3"; - outputs = ["out" "sessions"]; + outputs = [ "out" "sessions" ]; src = fetchurl { url = "mirror://gnome/sources/gnome-session/${lib.versions.major version}/${pname}-${version}.tar.xz"; - sha256 = "10nzyhmgkrzk6i70kj7690na0hmsv6qy5bmr10akxq9jxqlphy4w"; + sha256 = "7koikFP1ImJAVIiWCTNbiFKHz2e73g3J/YgrAeybWzk="; }; patches = [ @@ -18,22 +44,41 @@ stdenv.mkDerivation rec { src = ./fix-paths.patch; gsettings = "${glib.bin}/bin/gsettings"; dbusLaunch = "${dbus.lib}/bin/dbus-launch"; - grep = "${gnugrep}/bin/grep"; bash = "${bash}/bin/bash"; }) ]; - mesonFlags = [ "-Dsystemd=true" "-Dsystemd_session=default" ]; - nativeBuildInputs = [ - meson ninja pkg-config gettext makeWrapper - xmlto libxslt docbook_xsl docbook_xml_dtd_412 python3 + meson + ninja + pkg-config + gettext + makeWrapper + xmlto + libxslt + docbook_xsl + docbook_xml_dtd_412 + python3 dbus # for DTD ]; buildInputs = [ - glib gtk3 libICE gnome-desktop json-glib xorg.xtrans gnome.adwaita-icon-theme - gnome.gnome-settings-daemon gsettings-desktop-schemas systemd libepoxy + glib + gtk3 + libICE + gnome-desktop + json-glib + xorg.xtrans + gnome.adwaita-icon-theme + gnome.gnome-settings-daemon + gsettings-desktop-schemas + systemd + libepoxy + ]; + + mesonFlags = [ + "-Dsystemd=true" + "-Dsystemd_session=default" ]; postPatch = '' @@ -49,17 +94,6 @@ stdenv.mkDerivation rec { {} + ''; - # `bin/gnome-session` will reset the environment when run in wayland, we - # therefor wrap `libexec/gnome-session-binary` instead which is the actual - # binary needing wrapping - preFixup = '' - wrapProgram "$out/libexec/gnome-session-binary" \ - --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ - --suffix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \ - --suffix XDG_DATA_DIRS : "${gnome.gnome-shell}/share"\ - --suffix XDG_CONFIG_DIRS : "${gnome.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. @@ -72,12 +106,26 @@ stdenv.mkDerivation rec { rm -rf $out/libexec/gnome-session-ctl ''; + # `bin/gnome-session` will reset the environment when run in wayland, we + # therefor wrap `libexec/gnome-session-binary` instead which is the actual + # binary needing wrapping + preFixup = '' + wrapProgram "$out/libexec/gnome-session-binary" \ + --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \ + --suffix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \ + --suffix XDG_DATA_DIRS : "${gnome.gnome-shell}/share"\ + --suffix XDG_CONFIG_DIRS : "${gnome.gnome-settings-daemon}/etc/xdg" + ''; + passthru = { updateScript = gnome.updateScript { packageName = "gnome-session"; attrPath = "gnome.gnome-session"; }; - providedSessions = [ "gnome" "gnome-xorg" ]; + providedSessions = [ + "gnome" + "gnome-xorg" + ]; }; meta = with lib; { diff --git a/pkgs/desktops/gnome/core/gnome-session/fix-paths.patch b/pkgs/desktops/gnome/core/gnome-session/fix-paths.patch index 320b3024deee..38805c645b95 100644 --- a/pkgs/desktops/gnome/core/gnome-session/fix-paths.patch +++ b/pkgs/desktops/gnome/core/gnome-session/fix-paths.patch @@ -1,17 +1,10 @@ diff --git a/gnome-session/gnome-session.in b/gnome-session/gnome-session.in -index ddd1a591..46a3488b 100755 +index b4b1f8fa..99d52cba 100755 --- a/gnome-session/gnome-session.in +++ b/gnome-session/gnome-session.in -@@ -3,17 +3,19 @@ - if [ "x$XDG_SESSION_TYPE" = "xwayland" ] && +@@ -4,13 +4,15 @@ if [ "x$XDG_SESSION_TYPE" = "xwayland" ] && [ "x$XDG_SESSION_CLASS" != "xgreeter" ] && - [ -n "$SHELL" ] && -- grep -q "$SHELL" /etc/shells && -- ! (echo "$SHELL" | grep -q "false") && -- ! (echo "$SHELL" | grep -q "nologin"); then -+ @grep@ -q "$SHELL" /etc/shells && -+ ! (echo "$SHELL" | @grep@ -q "false") && -+ ! (echo "$SHELL" | @grep@ -q "nologin"); then + [ -n "$SHELL" ]; then if [ "$1" != '-l' ]; then - exec bash -c "exec -l '$SHELL' -c '$0 -l $*'" + # Make sure the shell actually sets up the environment. @@ -28,7 +21,7 @@ index ddd1a591..46a3488b 100755 REGION=${REGION%\'} diff --git a/gnome-session/main.c b/gnome-session/main.c -index 84edfbe5..e5285489 100644 +index a460a849..9d07898f 100644 --- a/gnome-session/main.c +++ b/gnome-session/main.c @@ -215,7 +215,7 @@ require_dbus_session (int argc,