summary refs log tree commit diff
path: root/pkgs/desktops/gnome-3/core/gdm
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2017-09-24 13:15:50 +0200
committerzimbatm <zimbatm@zimbatm.com>2017-09-24 12:15:50 +0100
commit69698ec11cc0619d84b14764fa9e708fe7e7223c (patch)
tree9d9f602554b497a3265caf5e2ef4821e12736686 /pkgs/desktops/gnome-3/core/gdm
parent23b19efdc9c8d64177cefcaa5b919db966bb8f5e (diff)
downloadnixpkgs-69698ec11cc0619d84b14764fa9e708fe7e7223c.tar
nixpkgs-69698ec11cc0619d84b14764fa9e708fe7e7223c.tar.gz
nixpkgs-69698ec11cc0619d84b14764fa9e708fe7e7223c.tar.bz2
nixpkgs-69698ec11cc0619d84b14764fa9e708fe7e7223c.tar.lz
nixpkgs-69698ec11cc0619d84b14764fa9e708fe7e7223c.tar.xz
nixpkgs-69698ec11cc0619d84b14764fa9e708fe7e7223c.tar.zst
nixpkgs-69698ec11cc0619d84b14764fa9e708fe7e7223c.zip
gnome3: only maintain single GNOME 3 package set (#29397)
* gnome3: only maintain single GNOME 3 package set

GNOME 3 was split into 3.10 and 3.12 in #2694. Unfortunately, we barely have the resources
to update a single version of GNOME. Maintaining multiple versions just does not make sense.
Additionally, it makes viewing history using most Git tools bothersome.

This commit renames `pkgs/desktops/gnome-3/3.24` to `pkgs/desktops/gnome-3`, removes
the config variable for choosing packageset (`environment.gnome3.packageSet`), updates
the hint in maintainer script, and removes the `gnome3_24` derivation from `all-packages.nix`.

Closes: #29329

* maintainers/scripts/gnome: Use fixed GNOME 3 directory

Since we now allow only a single GNOME 3 package set, specifying
the working directory is not necessary.

This commit sets the directory to `pkgs/desktops/gnome-3`.
Diffstat (limited to 'pkgs/desktops/gnome-3/core/gdm')
-rw-r--r--pkgs/desktops/gnome-3/core/gdm/default.nix40
-rw-r--r--pkgs/desktops/gnome-3/core/gdm/gdm-session-worker_xserver-path.patch17
-rw-r--r--pkgs/desktops/gnome-3/core/gdm/gdm-x-session_extra_args.patch38
-rw-r--r--pkgs/desktops/gnome-3/core/gdm/gdm-x-session_path.patch19
-rw-r--r--pkgs/desktops/gnome-3/core/gdm/sessions_dir.patch23
-rw-r--r--pkgs/desktops/gnome-3/core/gdm/src.nix10
6 files changed, 147 insertions, 0 deletions
diff --git a/pkgs/desktops/gnome-3/core/gdm/default.nix b/pkgs/desktops/gnome-3/core/gdm/default.nix
new file mode 100644
index 00000000000..59f0381f2e8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gdm/default.nix
@@ -0,0 +1,40 @@
+{ stdenv, fetchurl, pkgconfig, glib, itstool, libxml2, xorg, dbus
+, intltool, accountsservice, libX11, gnome3, systemd, autoreconfHook
+, gtk, libcanberra_gtk3, pam, libtool, gobjectIntrospection, plymouth
+, librsvg }:
+
+stdenv.mkDerivation rec {
+  inherit (import ./src.nix fetchurl) name src;
+
+  # Only needed to make it build
+  preConfigure = ''
+    substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver.out}/bin/X"
+  '';
+
+  configureFlags = [ "--sysconfdir=/etc"
+                     "--localstatedir=/var"
+                     "--with-plymouth=yes"
+                     "--with-systemdsystemunitdir=$(out)/etc/systemd/system" ];
+
+  buildInputs = [ pkgconfig glib itstool libxml2 intltool autoreconfHook
+                  accountsservice gnome3.dconf systemd
+                  gobjectIntrospection libX11 gtk
+                  libcanberra_gtk3 pam libtool plymouth librsvg ];
+
+  enableParallelBuilding = true;
+
+  # Disable Access Control because our X does not support FamilyServerInterpreted yet
+  patches = [ ./sessions_dir.patch
+              ./gdm-x-session_extra_args.patch
+              ./gdm-session-worker_xserver-path.patch
+             ];
+
+  installFlags = [ "sysconfdir=$(out)/etc" "dbusconfdir=$(out)/etc/dbus-1/system.d" ];
+
+  meta = with stdenv.lib; {
+    homepage = https://wiki.gnome.org/Projects/GDM;
+    description = "A program that manages graphical display servers and handles graphical user logins";
+    platforms = platforms.linux;
+    maintainers = gnome3.maintainers;
+  };
+}
diff --git a/pkgs/desktops/gnome-3/core/gdm/gdm-session-worker_xserver-path.patch b/pkgs/desktops/gnome-3/core/gdm/gdm-session-worker_xserver-path.patch
new file mode 100644
index 00000000000..d020752fef3
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gdm/gdm-session-worker_xserver-path.patch
@@ -0,0 +1,17 @@
+diff --git a/daemon/gdm-session-worker.c.orig b/daemon/gdm-session-worker.c
+index 7bbda49..592691d 100644
+--- a/daemon/gdm-session-worker.c.orig
++++ b/daemon/gdm-session-worker.c
+@@ -1557,6 +1557,12 @@ gdm_session_worker_accredit_user (GdmSessionWorker  *worker,
+                 goto out;
+         }
+ 
++        if (g_getenv ("GDM_X_SERVER_EXTRA_ARGS") != NULL) {
++                g_debug ("forwarding GDM_X_SERVER_EXTRA_ARGS= %s", g_getenv("GDM_X_SERVER_EXTRA_ARGS"));
++                gdm_session_worker_set_environment_variable (worker, "GDM_X_SERVER_EXTRA_ARGS",
++                                                             g_getenv("GDM_X_SERVER_EXTRA_ARGS"));
++        }
++
+         gdm_session_worker_update_environment_from_passwd_info (worker,
+                                                                 uid,
+                                                                 gid,
diff --git a/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_extra_args.patch b/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_extra_args.patch
new file mode 100644
index 00000000000..66071aa4af8
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_extra_args.patch
@@ -0,0 +1,38 @@
+diff --git a/daemon/gdm-x-session.c.orig b/daemon/gdm-x-session.c
+index d835b34..1f4b7f1 100644
+--- a/daemon/gdm-x-session.c.orig
++++ b/daemon/gdm-x-session.c
+@@ -211,6 +211,7 @@ spawn_x_server (State        *state,
+         char     *vt_string = NULL;
+         char     *display_number;
+         gsize     display_number_size;
++        gchar   **xserver_extra_args = NULL;
+ 
+         auth_file = prepare_auth_file ();
+ 
+@@ -285,6 +286,17 @@ spawn_x_server (State        *state,
+         if (state->debug_enabled) {
+                 g_ptr_array_add (arguments, "-core");
+         }
++
++        if (g_getenv ("GDM_X_SERVER_EXTRA_ARGS") != NULL) {
++                g_debug ("using GDM_X_SERVER_EXTRA_ARGS: %s", g_getenv("GDM_X_SERVER_EXTRA_ARGS"));
++                xserver_extra_args = g_strsplit(g_getenv("GDM_X_SERVER_EXTRA_ARGS"), " ", -1);
++                for (gchar **extra_arg = xserver_extra_args; *extra_arg; extra_arg++) {
++                        if (strlen(*extra_arg) < 1) continue;
++			g_debug ("adding: %s", *extra_arg);
++                        g_ptr_array_add (arguments, *extra_arg);
++                }
++        }
++
+         g_ptr_array_add (arguments, NULL);
+ 
+         subprocess = g_subprocess_launcher_spawnv (launcher,
+@@ -332,6 +344,7 @@ spawn_x_server (State        *state,
+ 
+         is_running = TRUE;
+ out:
++	g_strfreev(xserver_extra_args);
+         g_clear_pointer (&auth_file, g_free);
+         g_clear_object (&data_stream);
+         g_clear_object (&subprocess);
diff --git a/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_path.patch b/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_path.patch
new file mode 100644
index 00000000000..84081f4786c
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gdm/gdm-x-session_path.patch
@@ -0,0 +1,19 @@
+diff --git a/daemon/gdm-x-session.c.orig b/daemon/gdm-x-session.c
+index d835b34..86f0d47 100644
+--- a/daemon/gdm-x-session.c.orig
++++ b/daemon/gdm-x-session.c
+@@ -240,7 +240,13 @@ spawn_x_server (State        *state,
+ 
+         display_fd_string = g_strdup_printf ("%d", DISPLAY_FILENO);
+ 
+-        g_ptr_array_add (arguments, X_SERVER);
++        if (g_getenv ("GDM_X_SERVER") != NULL) {
++                g_debug ("using GDM_X_SERVER: %s", g_getenv("GDM_X_SERVER"));
++		g_ptr_array_add (arguments, g_getenv("GDM_X_SERVER"));
++        } else {
++                g_debug ("GDM_X_SERVER not set, using default: %s", X_SERVER);
++                g_ptr_array_add (arguments, X_SERVER);
++        }
+ 
+         if (vt_string != NULL) {
+                 g_ptr_array_add (arguments, vt_string);
diff --git a/pkgs/desktops/gnome-3/core/gdm/sessions_dir.patch b/pkgs/desktops/gnome-3/core/gdm/sessions_dir.patch
new file mode 100644
index 00000000000..bbc803d49c1
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gdm/sessions_dir.patch
@@ -0,0 +1,23 @@
+diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
+index ff3a1acb..b8705d8f 100644
+--- a/daemon/gdm-session.c
++++ b/daemon/gdm-session.c
+@@ -344,6 +344,7 @@ get_system_session_dirs (GdmSession *self)
+         char **search_dirs;
+ 
+         static const char *x_search_dirs[] = {
++                "/var/empty",
+                 "/etc/X11/sessions/",
+                 DMCONFDIR "/Sessions/",
+                 DATADIR "/gdm/BuiltInSessions/",
+@@ -351,6 +352,10 @@ get_system_session_dirs (GdmSession *self)
+                 NULL
+         };
+ 
++        if (getenv("GDM_SESSIONS_DIR") != NULL) {
++                x_search_dirs[0] = getenv("GDM_SESSIONS_DIR");
++        };
++
+         static const char *wayland_search_dir = DATADIR "/wayland-sessions/";
+ 
+         search_array = g_array_new (TRUE, TRUE, sizeof (char *));
diff --git a/pkgs/desktops/gnome-3/core/gdm/src.nix b/pkgs/desktops/gnome-3/core/gdm/src.nix
new file mode 100644
index 00000000000..0dd7680467f
--- /dev/null
+++ b/pkgs/desktops/gnome-3/core/gdm/src.nix
@@ -0,0 +1,10 @@
+# Autogenerated by maintainers/scripts/gnome.sh update
+
+fetchurl: {
+  name = "gdm-3.24.2";
+
+  src = fetchurl {
+    url = mirror://gnome/sources/gdm/3.24/gdm-3.24.2.tar.xz;
+    sha256 = "4378b9fad5536e03c56ad138d0e249fbcaa09977b867895426cb41c978fe5de8";
+  };
+}