diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2017-09-28 12:32:57 -0400 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2017-09-28 12:32:57 -0400 |
commit | f037625f87b0b1d8852a1f31ebaece5fdbc87a2b (patch) | |
tree | af8c8369954890db69195a1e9394ce16c7640d7f /pkgs/desktops/gnome-3/core/gdm | |
parent | f08d6f0e2daf9f3d9daa070eee223855b33c430d (diff) | |
parent | 4e22e88b914ffb63393449c5e20fe8843a7ce93b (diff) | |
download | nixpkgs-f037625f87b0b1d8852a1f31ebaece5fdbc87a2b.tar nixpkgs-f037625f87b0b1d8852a1f31ebaece5fdbc87a2b.tar.gz nixpkgs-f037625f87b0b1d8852a1f31ebaece5fdbc87a2b.tar.bz2 nixpkgs-f037625f87b0b1d8852a1f31ebaece5fdbc87a2b.tar.lz nixpkgs-f037625f87b0b1d8852a1f31ebaece5fdbc87a2b.tar.xz nixpkgs-f037625f87b0b1d8852a1f31ebaece5fdbc87a2b.tar.zst nixpkgs-f037625f87b0b1d8852a1f31ebaece5fdbc87a2b.zip |
Merge remote-tracking branch 'upstream/staging' into deps-reorg
Diffstat (limited to 'pkgs/desktops/gnome-3/core/gdm')
6 files changed, 148 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..09e27e7c0c5 --- /dev/null +++ b/pkgs/desktops/gnome-3/core/gdm/default.nix @@ -0,0 +1,41 @@ +{ 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" ]; + + nativeBuildInputs = [ autoreconfHook pkgconfig ]; + buildInputs = [ glib itstool libxml2 intltool + 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"; + }; +} |