diff options
Diffstat (limited to 'pkgs/desktops/gnome-3/3.18/core/gdm')
10 files changed, 272 insertions, 0 deletions
diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/default.nix b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/default.nix new file mode 100644 index 00000000000..51b67afb01f --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, pkgconfig, glib, itstool, libxml2, xorg, dbus +, intltool, accountsservice, libX11, gnome3, systemd, gnome_session +, gtk, libcanberra_gtk3, pam, libtool, gobjectIntrospection }: + +stdenv.mkDerivation rec { + name = "gdm-${gnome3.version}.2"; + + src = fetchurl { + url = "mirror://gnome/sources/gdm/${gnome3.version}/${name}.tar.xz"; + sha256 = "0mhv3q8z208qvhz00zrxlqn7w9gi5vy6w8dpjh5s2ka28l3yhbn3"; + }; + + preConfigure = '' + substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver}/bin/X" + substituteInPlace daemon/gdm-simple-slave.c --replace 'BINDIR "/gnome-session' '"${gnome_session}/bin/gnome-session' + substituteInPlace daemon/gdm-launch-environment.c --replace 'BINDIR "/dbus-launch' '"${dbus.tools}/bin/dbus-launch' + substituteInPlace data/gdm.conf-custom.in --replace '#WaylandEnable=false' 'WaylandEnable=false' + sed 's/#Enable=true/Enable=true/' -i data/gdm.conf-custom.in + ''; + + configureFlags = [ "--localstatedir=/var" "--with-systemd=yes" "--without-plymouth" + "--with-systemdsystemunitdir=$(out)/etc/systemd/system" + "--with-initial-vt=10" ]; + + buildInputs = [ pkgconfig glib itstool libxml2 intltool + accountsservice gnome3.dconf systemd + gobjectIntrospection libX11 gtk + libcanberra_gtk3 pam libtool ]; + + #enableParallelBuilding = true; # problems compiling + + # Disable Access Control because our X does not support FamilyServerInterpreted yet + patches = [ ./xserver_path.patch ./sessions_dir.patch ./disable_x_access_control.patch ]; + + 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/3.18/core/gdm/3.16-wip/disable_x_access_control.patch b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/disable_x_access_control.patch new file mode 100644 index 00000000000..7691a9e86f0 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/disable_x_access_control.patch @@ -0,0 +1,15 @@ +--- gdm-3.16.0/daemon/gdm-display.c.orig 2015-04-08 13:53:14.370274369 +0200 ++++ gdm-3.16.0/daemon/gdm-display.c 2015-04-08 13:53:36.287520435 +0200 +@@ -1706,9 +1706,10 @@ + + gdm_error_trap_push (); + +- for (i = 0; i < G_N_ELEMENTS (host_entries); i++) { ++ /*for (i = 0; i < G_N_ELEMENTS (host_entries); i++) { + XAddHost (self->priv->x11_display, &host_entries[i]); +- } ++ }*/ ++ XDisableAccessControl(self->priv->x11_display); + + XSync (self->priv->x11_display, False); + if (gdm_error_trap_pop ()) { diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/sessions_dir.patch b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/sessions_dir.patch new file mode 100644 index 00000000000..b8fbad4d731 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/sessions_dir.patch @@ -0,0 +1,17 @@ +diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c +index f759d2d..d154716 100644 +--- a/daemon/gdm-session.c ++++ b/daemon/gdm-session.c +@@ -373,9 +373,12 @@ get_system_session_dirs (void) + #ifdef ENABLE_WAYLAND_SUPPORT + DATADIR "/wayland-sessions/", + #endif ++ NULL, + NULL + }; + ++ search_dirs[4] = getenv("GDM_SESSIONS_DIR") != NULL ? getenv("GDM_SESSIONS_DIR") : NULL; ++ + return search_dirs; + } + diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/xserver_path.patch b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/xserver_path.patch new file mode 100644 index 00000000000..b451d129391 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/3.16-wip/xserver_path.patch @@ -0,0 +1,83 @@ +--- a/daemon/gdm-server.c 2014-07-30 23:00:17.786841724 +0200 ++++ b/daemon/gdm-server.c 2014-07-30 23:02:10.491239180 +0200 +@@ -322,7 +322,11 @@ + fallback: + #endif + +- server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options); ++ if (g_getenv("GDM_X_SERVER") != NULL) { ++ server->priv->command = g_strdup (g_getenv("GDM_X_SERVER")); ++ } else { ++ server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options); ++ } + } + + static gboolean +--- gdm-3.16.0/daemon/gdm-x-session.c.orig 2015-04-15 18:44:16.875743928 +0200 ++++ gdm-3.16.0/daemon/gdm-x-session.c 2015-04-16 13:34:02.335708638 +0200 +@@ -207,6 +207,8 @@ + char *display_fd_string = NULL; + char *vt_string = NULL; + char *display_number; ++ int nixos_argc = 0; ++ char **nixos_argv = NULL; + gsize display_number_size; + + auth_file = prepare_auth_file (); +@@ -236,7 +238,15 @@ + + display_fd_string = g_strdup_printf ("%d", DISPLAY_FILENO); + +- g_ptr_array_add (arguments, X_SERVER); ++ if (g_getenv("GDM_X_SERVER") != NULL) { ++ int i = 0; ++ g_shell_parse_argv(g_getenv("GDM_X_SERVER"), &nixos_argc, &nixos_argv, NULL); ++ for (i = 0; i < nixos_argc; i++) { ++ g_ptr_array_add (arguments, nixos_argv[i]); ++ } ++ } else { ++ g_ptr_array_add (arguments, X_SERVER); ++ } + + if (vt_string != NULL) { + g_ptr_array_add (arguments, vt_string); +@@ -259,12 +269,12 @@ + g_ptr_array_add (arguments, "-noreset"); + g_ptr_array_add (arguments, "-keeptty"); + +- g_ptr_array_add (arguments, "-verbose"); ++ /*g_ptr_array_add (arguments, "-verbose"); + if (state->debug_enabled) { + g_ptr_array_add (arguments, "7"); + } else { + g_ptr_array_add (arguments, "3"); +- } ++ }*/ + + if (state->debug_enabled) { + g_ptr_array_add (arguments, "-core"); +@@ -275,6 +285,9 @@ + (const char * const *) arguments->pdata, + &error); + g_free (display_fd_string); ++ if (nixos_argv) { ++ g_strfreev (nixos_argv); ++ } + g_clear_object (&launcher); + g_ptr_array_free (arguments, TRUE); + +--- gdm-3.16.0/daemon/gdm-session.c.orig 2015-04-16 14:19:01.392802683 +0200 ++++ gdm-3.16.0/daemon/gdm-session.c 2015-04-16 14:20:36.012296764 +0200 +@@ -2359,6 +2359,12 @@ + gchar *desktop_names; + const char *locale; + ++ if (g_getenv ("GDM_X_SERVER") != NULL) { ++ gdm_session_set_environment_variable (self, ++ "GDM_X_SERVER", ++ g_getenv ("GDM_X_SERVER")); ++ } ++ + gdm_session_set_environment_variable (self, + "GDMSESSION", + get_session_name (self)); diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/default.nix b/pkgs/desktops/gnome-3/3.18/core/gdm/default.nix new file mode 100644 index 00000000000..1db96965131 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/default.nix @@ -0,0 +1,41 @@ +{ stdenv, fetchurl, pkgconfig, glib, itstool, libxml2, xorg, dbus +, intltool, accountsservice, libX11, gnome3, systemd, gnome_session +, gtk, libcanberra_gtk3, pam, libtool, gobjectIntrospection }: + +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}/bin/X" + ''; + + configureFlags = [ "--sysconfdir=/etc" + "--localstatedir=/var" + "--with-systemd=yes" + "--with-systemdsystemunitdir=$(out)/etc/systemd/system" ]; + + buildInputs = [ pkgconfig glib itstool libxml2 intltool + accountsservice gnome3.dconf systemd + gobjectIntrospection libX11 gtk + libcanberra_gtk3 pam libtool ]; + + #enableParallelBuilding = true; # problems compiling + + preBuild = '' + substituteInPlace daemon/gdm-simple-slave.c --replace 'BINDIR "/gnome-session' '"${gnome_session}/bin/gnome-session' + ''; + + # Disable Access Control because our X does not support FamilyServerInterpreted yet + patches = [ ./xserver_path.patch ./sessions_dir.patch + ./disable_x_access_control.patch ./no-dbus-launch.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/3.18/core/gdm/disable_x_access_control.patch b/pkgs/desktops/gnome-3/3.18/core/gdm/disable_x_access_control.patch new file mode 100644 index 00000000000..e100e013b78 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/disable_x_access_control.patch @@ -0,0 +1,13 @@ +--- gdm-3.14.2/daemon/gdm-slave.c.orig 2015-04-16 15:05:27.844353079 +0200 ++++ gdm-3.14.2/daemon/gdm-slave.c 2015-04-16 15:05:40.240417915 +0200 +@@ -369,8 +369,9 @@ + gdm_error_trap_push (); + + for (i = 0; i < G_N_ELEMENTS (host_entries); i++) { +- XAddHost (slave->priv->server_display, &host_entries[i]); ++ //XAddHost (slave->priv->server_display, &host_entries[i]); + } ++ XDisableAccessControl(slave->priv->server_display); + + XSync (slave->priv->server_display, False); + if (gdm_error_trap_pop ()) { diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/no-dbus-launch.patch b/pkgs/desktops/gnome-3/3.18/core/gdm/no-dbus-launch.patch new file mode 100644 index 00000000000..c87554078c7 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/no-dbus-launch.patch @@ -0,0 +1,20 @@ +--- a/daemon/gdm-launch-environment.c 2015-06-22 15:11:07.277474398 +0000 ++++ b/daemon/gdm-launch-environment.c 2015-06-22 15:12:31.301157665 +0000 +@@ -48,8 +48,6 @@ + #include "gdm-session-enum-types.h" + #include "gdm-launch-environment.h" + +-#define DBUS_LAUNCH_COMMAND BINDIR "/dbus-launch --exit-with-session" +- + extern char **environ; + + #define GDM_LAUNCH_ENVIRONMENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_LAUNCH_ENVIRONMENT, GdmLaunchEnvironmentPrivate)) +@@ -512,7 +510,7 @@ + gdm_session_select_program (launch_environment->priv->session, launch_environment->priv->command); + } else { + /* wrap it in dbus-launch */ +- char *command = g_strdup_printf ("%s %s", DBUS_LAUNCH_COMMAND, launch_environment->priv->command); ++ char *command = g_strdup (launch_environment->priv->command); + + gdm_session_select_program (launch_environment->priv->session, command); + g_free (command); diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/sessions_dir.patch b/pkgs/desktops/gnome-3/3.18/core/gdm/sessions_dir.patch new file mode 100644 index 00000000000..b8fbad4d731 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/sessions_dir.patch @@ -0,0 +1,17 @@ +diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c +index f759d2d..d154716 100644 +--- a/daemon/gdm-session.c ++++ b/daemon/gdm-session.c +@@ -373,9 +373,12 @@ get_system_session_dirs (void) + #ifdef ENABLE_WAYLAND_SUPPORT + DATADIR "/wayland-sessions/", + #endif ++ NULL, + NULL + }; + ++ search_dirs[4] = getenv("GDM_SESSIONS_DIR") != NULL ? getenv("GDM_SESSIONS_DIR") : NULL; ++ + return search_dirs; + } + diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/src.nix b/pkgs/desktops/gnome-3/3.18/core/gdm/src.nix new file mode 100644 index 00000000000..acd46534e14 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/src.nix @@ -0,0 +1,10 @@ +# Autogenerated by maintainers/scripts/gnome.sh update + +fetchurl: { + name = "gdm-3.14.2"; + + src = fetchurl { + url = mirror://gnome/sources/gdm/3.14/gdm-3.14.2.tar.xz; + sha256 = "e20eb61496161ad95b1058dbf8aea9b7b004df4d0ea6b0fab4401397d9db5930"; + }; +} diff --git a/pkgs/desktops/gnome-3/3.18/core/gdm/xserver_path.patch b/pkgs/desktops/gnome-3/3.18/core/gdm/xserver_path.patch new file mode 100644 index 00000000000..412daee9f27 --- /dev/null +++ b/pkgs/desktops/gnome-3/3.18/core/gdm/xserver_path.patch @@ -0,0 +1,15 @@ +--- a/daemon/gdm-server.c 2014-07-30 23:00:17.786841724 +0200 ++++ b/daemon/gdm-server.c 2014-07-30 23:02:10.491239180 +0200 +@@ -322,7 +322,11 @@ + fallback: + #endif + +- server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options); ++ if (g_getenv("GDM_X_SERVER") != NULL) { ++ server->priv->command = g_strdup (g_getenv("GDM_X_SERVER")); ++ } else { ++ server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options); ++ } + } + + static gboolean |