diff --git a/pkgs/desktops/gnome-3/core/gdm/default.nix b/pkgs/desktops/gnome-3/core/gdm/default.nix index 6b6b23f21b54..88fed09de382 100644 --- a/pkgs/desktops/gnome-3/core/gdm/default.nix +++ b/pkgs/desktops/gnome-3/core/gdm/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, glib, itstool, libxml2, xorg, dbus +{ stdenv, fetchurl, substituteAll, pkgconfig, glib, itstool, libxml2, xorg, dbus , intltool, accountsservice, libX11, gnome3, systemd, autoreconfHook , gtk, libcanberra-gtk3, pam, libtool, gobjectIntrospection, plymouth , librsvg, coreutils }: @@ -12,50 +12,56 @@ stdenv.mkDerivation rec { sha256 = "1yxjjyrp0ywrc25cp81bsdhp79zn0c0jag48hlp00b5wfnkqy1kp"; }; - passthru = { - updateScript = gnome3.updateScript { packageName = "gdm"; attrPath = "gnome3.gdm"; }; - }; - # Only needed to make it build preConfigure = '' substituteInPlace ./configure --replace "/usr/bin/X" "${xorg.xorgserver.out}/bin/X" ''; - postPatch = '' - substituteInPlace daemon/gdm-manager.c --replace "/bin/plymouth" "${plymouth}/bin/plymouth" - substituteInPlace data/gdm.service.in --replace "/bin/kill" "${coreutils}/bin/kill" - ''; - - configureFlags = [ "--sysconfdir=/etc" - "--localstatedir=/var" - "--with-plymouth=yes" - "--with-initial-vt=7" - "--with-systemdsystemunitdir=$(out)/etc/systemd/system" ]; + configureFlags = [ + "--sysconfdir=/etc" + "--localstatedir=/var" + "--with-plymouth=yes" + "--with-initial-vt=7" + "--with-systemdsystemunitdir=$(out)/etc/systemd/system" + ]; nativeBuildInputs = [ pkgconfig libxml2 itstool intltool autoreconfHook libtool gnome3.dconf ]; - buildInputs = [ glib accountsservice systemd - gobjectIntrospection libX11 gtk - libcanberra-gtk3 pam plymouth librsvg ]; + buildInputs = [ + glib accountsservice systemd + gobjectIntrospection libX11 gtk + libcanberra-gtk3 pam 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 - ]; + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit coreutils plymouth; + }) + ./sessions_dir.patch + ./gdm-x-session_extra_args.patch + ./gdm-session-worker_xserver-path.patch + ]; - postInstall = '' - # Prevent “Could not parse desktop file orca-autostart.desktop or it references a not found TryExec binary” - rm $out/share/gdm/greeter/autostart/orca-autostart.desktop - ''; + installFlags = [ + "sysconfdir=$(out)/etc" + "dbusconfdir=$(out)/etc/dbus-1/system.d" + ]; - installFlags = [ "sysconfdir=$(out)/etc" "dbusconfdir=$(out)/etc/dbus-1/system.d" ]; + passthru = { + updateScript = gnome3.updateScript { + packageName = "gdm"; + attrPath = "gnome3.gdm"; + }; + }; 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; + homepage = https://wiki.gnome.org/Projects/GDM; + license = licenses.gpl2Plus; maintainers = gnome3.maintainers; + platforms = platforms.linux; }; } diff --git a/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch b/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch new file mode 100644 index 000000000000..d10283d40eae --- /dev/null +++ b/pkgs/desktops/gnome-3/core/gdm/fix-paths.patch @@ -0,0 +1,49 @@ +--- a/daemon/gdm-manager.c ++++ b/daemon/gdm-manager.c +@@ -147,7 +147,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_sync ("/bin/plymouth --ping", ++ res = g_spawn_command_line_sync ("@plymouth@/bin/plymouth --ping", + NULL, NULL, &status, &error); + if (! res) { + g_debug ("Could not ping plymouth: %s", error->message); +@@ -165,7 +165,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_sync ("/bin/plymouth deactivate", ++ res = g_spawn_command_line_sync ("@plymouth@/bin/plymouth deactivate", + NULL, NULL, NULL, &error); + if (! res) { + g_warning ("Could not deactivate plymouth: %s", error->message); +@@ -180,7 +180,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_async ("/bin/plymouth quit --retain-splash", &error); ++ res = g_spawn_command_line_async ("@plymouth@/bin/plymouth quit --retain-splash", &error); + if (! res) { + g_warning ("Could not quit plymouth: %s", error->message); + g_error_free (error); +@@ -196,7 +196,7 @@ + GError *error; + + error = NULL; +- res = g_spawn_command_line_async ("/bin/plymouth quit", &error); ++ res = g_spawn_command_line_async ("@plymouth@/bin/plymouth quit", &error); + if (! res) { + g_warning ("Could not quit plymouth: %s", error->message); + g_error_free (error); +--- a/data/gdm.service.in ++++ b/data/gdm.service.in +@@ -28,7 +28,7 @@ + StandardOutput=syslog + StandardError=inherit + EnvironmentFile=-@LANG_CONFIG_FILE@ +-ExecReload=/bin/kill -SIGHUP $MAINPID ++ExecReload=@coreutils@/bin/kill -SIGHUP $MAINPID + + [Install] + Alias=display-manager.service