diff --git a/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix b/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix index 8774de41c4b2..b49b13aae802 100644 --- a/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix +++ b/pkgs/desktops/gnome-3/core/gnome-control-center/default.nix @@ -1,27 +1,22 @@ -{ fetchurl, stdenv, pkgconfig, gnome3, ibus, intltool, upower, wrapGAppsHook +{ fetchurl, stdenv, substituteAll, pkgconfig, gnome3, ibus, intltool, upower, wrapGAppsHook , libcanberra-gtk3, accountsservice, libpwquality, libpulseaudio -, gdk_pixbuf, librsvg, libnotify, libgudev +, gdk_pixbuf, librsvg, libnotify, libgudev, gnome-color-manager , libxml2, polkit, libxslt, libgtop, libsoup, colord, colord-gtk -, cracklib, libkrb5, networkmanagerapplet, networkmanager -, libwacom, samba, shared-mime-info, tzdata, libtool +, cracklib, libkrb5, networkmanagerapplet, networkmanager, glibc +, libwacom, samba, shared-mime-info, tzdata, libtool, libgnomekbd , docbook_xsl, docbook_xsl_ns, modemmanager, clutter, clutter-gtk , fontconfig, sound-theme-freedesktop, grilo }: -stdenv.mkDerivation rec { - name = "gnome-control-center-${version}"; +let version = "3.26.2"; +in stdenv.mkDerivation rec { + name = "gnome-control-center-${version}"; src = fetchurl { url = "mirror://gnome/sources/gnome-control-center/${gnome3.versionBranch version}/${name}.tar.xz"; sha256 = "07aed27d6317f2cad137daa6d94a37ad02c32b958dcd30c8f07d0319abfb04c5"; }; - passthru = { - updateScript = gnome3.updateScript { packageName = "gnome-control-center"; attrPath = "gnome3.gnome-control-center"; }; - }; - - propagatedUserEnvPkgs = [ gnome3.gnome-themes-standard ]; - nativeBuildInputs = [ pkgconfig intltool wrapGAppsHook libtool libxslt docbook_xsl docbook_xsl_ns shared-mime-info @@ -37,15 +32,13 @@ stdenv.mkDerivation rec { networkmanager modemmanager gnome-bluetooth tracker ]; - preBuild = '' - substituteInPlace panels/datetime/tz.h --replace "/usr/share/zoneinfo/zone.tab" "${tzdata}/share/zoneinfo/zone.tab" - - substituteInPlace panels/region/cc-region-panel.c --replace "gkbd-keyboard-display" "${gnome3.libgnomekbd}/bin/gkbd-keyboard-display" - - # hack to make test-endianess happy - mkdir -p $out/share/locale - substituteInPlace panels/datetime/test-endianess.c --replace "/usr/share/locale/" "$out/share/locale/" - ''; + patches = [ + (substituteAll { + src = ./paths.patch; + gcm = gnome-color-manager; + inherit glibc libgnomekbd tzdata; + }) + ]; preFixup = '' gappsWrapperArgs+=( @@ -59,6 +52,13 @@ stdenv.mkDerivation rec { done ''; + passthru = { + updateScript = gnome3.updateScript { + packageName = "gnome-control-center"; + attrPath = "gnome3.gnome-control-center"; + }; + }; + meta = with stdenv.lib; { description = "Utilities to configure the GNOME desktop"; license = licenses.gpl2Plus; diff --git a/pkgs/desktops/gnome-3/core/gnome-control-center/paths.patch b/pkgs/desktops/gnome-3/core/gnome-control-center/paths.patch new file mode 100644 index 000000000000..ad9187b650e4 --- /dev/null +++ b/pkgs/desktops/gnome-3/core/gnome-control-center/paths.patch @@ -0,0 +1,82 @@ +--- a/panels/color/cc-color-panel.c ++++ b/panels/color/cc-color-panel.c +@@ -634,7 +634,7 @@ + + /* run with modal set */ + argv = g_ptr_array_new_with_free_func (g_free); +- g_ptr_array_add (argv, g_build_filename (BINDIR, "gcm-calibrate", NULL)); ++ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-calibrate", NULL)); + g_ptr_array_add (argv, g_strdup ("--device")); + g_ptr_array_add (argv, g_strdup (cd_device_get_id (priv->current_device))); + g_ptr_array_add (argv, g_strdup ("--parent-window")); +@@ -1136,7 +1136,7 @@ + + /* open up gcm-viewer as a info pane */ + argv = g_ptr_array_new_with_free_func (g_free); +- g_ptr_array_add (argv, g_build_filename (BINDIR, "gcm-viewer", NULL)); ++ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-viewer", NULL)); + g_ptr_array_add (argv, g_strdup ("--profile")); + g_ptr_array_add (argv, g_strdup (cd_profile_get_id (profile))); + g_ptr_array_add (argv, g_strdup ("--parent-window")); +@@ -1406,7 +1406,6 @@ + gcm_prefs_profile_clicked (CcColorPanel *prefs, CdProfile *profile, CdDevice *device) + { + GtkWidget *widget; +- gchar *s; + CcColorPanelPrivate *priv = prefs->priv; + + /* get profile */ +@@ -1416,11 +1415,9 @@ + /* allow getting profile info */ + widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, + "toolbutton_profile_view")); +- if (cd_profile_get_filename (profile) != NULL && +- (s = g_find_program_in_path ("gcm-viewer")) != NULL) ++ if (cd_profile_get_filename (profile) != NULL) + { + gtk_widget_set_sensitive (widget, TRUE); +- g_free (s); + } + else + gtk_widget_set_sensitive (widget, FALSE); +--- a/panels/datetime/test-endianess.c ++++ b/panels/datetime/test-endianess.c +@@ -26,7 +26,7 @@ + GDir *dir; + const char *name; + +- dir = g_dir_open ("/usr/share/i18n/locales/", 0, NULL); ++ dir = g_dir_open ("@glibc@/share/i18n/locales/", 0, NULL); + if (dir == NULL) { + /* Try with /usr/share/locale/ + * https://bugzilla.gnome.org/show_bug.cgi?id=646780 */ +--- a/panels/datetime/tz.h ++++ b/panels/datetime/tz.h +@@ -27,11 +27,7 @@ + + #include + +-#ifndef __sun +-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab" +-#else +-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab" +-#endif ++#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab" + + typedef struct _TzDB TzDB; + typedef struct _TzLocation TzLocation; +--- a/panels/region/cc-region-panel.c ++++ b/panels/region/cc-region-panel.c +@@ -1388,10 +1388,10 @@ + } + + if (variant && variant[0]) +- commandline = g_strdup_printf ("gkbd-keyboard-display -l \"%s\t%s\"", ++ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l \"%s\t%s\"", + layout, variant); + else +- commandline = g_strdup_printf ("gkbd-keyboard-display -l %s", ++ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l %s", + layout); + + g_spawn_command_line_async (commandline, NULL);