diff --git a/pkgs/development/libraries/granite/02-datetime-clock-format-gsettings.patch b/pkgs/development/libraries/granite/02-datetime-clock-format-gsettings.patch new file mode 100644 index 000000000000..7b7c9871133a --- /dev/null +++ b/pkgs/development/libraries/granite/02-datetime-clock-format-gsettings.patch @@ -0,0 +1,129 @@ +From 698e34dd6e8d98a1818ae00d3313b69a86340771 Mon Sep 17 00:00:00 2001 +From: Fabio Valentini +Date: Mon, 17 Dec 2018 14:58:14 +0100 +Subject: DateTime: include "clock-format" gsettings key here + +--- + data/io.elementary.granite.gschema.xml | 15 +++++++++++++++ + data/meson.build | 4 ++++ + lib/DateTime.vala | 4 ++-- + meson.build | 11 +++++++++++ + meson/post_install.py | 5 +++++ + 5 files changed, 37 insertions(+), 2 deletions(-) + create mode 100644 data/io.elementary.granite.gschema.xml + create mode 100644 data/meson.build + +diff --git a/data/io.elementary.granite.gschema.xml b/data/io.elementary.granite.gschema.xml +new file mode 100644 +index 0000000..1540fb0 +--- /dev/null ++++ b/data/io.elementary.granite.gschema.xml +@@ -0,0 +1,15 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ "12h" ++ Whether the clock displays in 12h or 24h format ++ Whether the clock displays in 12h or 24h format ++ ++ ++ +diff --git a/data/meson.build b/data/meson.build +new file mode 100644 +index 0000000..96cc3b1 +--- /dev/null ++++ b/data/meson.build +@@ -0,0 +1,4 @@ ++install_data( ++ rdnn + '.gschema.xml', ++ install_dir: schema_dir ++) +diff --git a/lib/DateTime.vala b/lib/DateTime.vala +index aea2ec6..3d81191 100644 +--- a/lib/DateTime.vala ++++ b/lib/DateTime.vala +@@ -104,13 +104,13 @@ namespace Granite.DateTime { + } + + /** +- * Gets the //clock-format// key from //org.gnome.desktop.interface// schema ++ * Gets the //clock-format// key from //io.elementary.granite// schema + * and determines if the clock format is 12h based + * + * @return true if the clock format is 12h based, false otherwise. + */ + private static bool is_clock_format_12h () { +- var h24_settings = new Settings ("io.elementary.desktop.wingpanel.datetime"); ++ var h24_settings = new Settings ("io.elementary.granite"); + var format = h24_settings.get_string ("clock-format"); + return (format.contains ("12h")); + } +diff --git a/meson.build b/meson.build +index 8b98eeb..f0abcdf 100644 +--- a/meson.build ++++ b/meson.build +@@ -4,6 +4,8 @@ project( + version: '5.2.2' + ) + ++rdnn = 'io.elementary.' + meson.project_name() ++ + if meson.get_compiler('vala').version().version_compare('<0.40.0') + error('vala compiler version 0.40.0 or newer is required.') + endif +@@ -52,10 +54,18 @@ icons_dir = join_paths( + 'hicolor' + ) + ++schema_dir = join_paths( ++ get_option('prefix'), ++ get_option('datadir'), ++ 'glib-2.0', ++ 'schemas' ++) ++ + pkgconfig = import('pkgconfig') + i18n = import('i18n') + + subdir('lib') ++subdir('data') + subdir('demo') + subdir('icons') + subdir('po') +@@ -68,5 +78,6 @@ endif + meson.add_install_script( + join_paths(meson.current_source_dir(), 'meson', 'post_install.py'), + '--iconsdir', icons_dir, ++ '--schemadir', schema_dir, + ) + +diff --git a/meson/post_install.py b/meson/post_install.py +index 1864515..5313f96 100755 +--- a/meson/post_install.py ++++ b/meson/post_install.py +@@ -6,11 +6,16 @@ import subprocess + + parser = argparse.ArgumentParser() + parser.add_argument("--iconsdir", action="store", required=True) ++parser.add_argument("--schemadir", action="store", required=True) + args = vars(parser.parse_args()) + + icons_dir = args["iconsdir"] ++schema_dir = args["schemadir"] + + if not os.environ.get('DESTDIR'): + print('Compiling icon cache ...') + subprocess.run(['gtk-update-icon-cache', icons_dir]) + ++ print('Compiling GSettings schemas ...') ++ subprocess.run(['glib-compile-schemas', schema_dir]) ++ +-- +2.20.1 + diff --git a/pkgs/development/libraries/granite/default.nix b/pkgs/development/libraries/granite/default.nix index 6c71f292a8da..eacb84e33616 100644 --- a/pkgs/development/libraries/granite/default.nix +++ b/pkgs/development/libraries/granite/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, cmake, ninja, vala_0_40, pkgconfig, gobject-introspection, gnome3, gtk3, glib, gettext }: +{ stdenv, fetchFromGitHub, fetchpatch, python3, meson, ninja, vala_0_40, pkgconfig, gobject-introspection, gnome3, gtk3, glib, gettext, hicolor-icon-theme, wrapGAppsHook }: stdenv.mkDerivation rec { pname = "granite"; @@ -11,26 +11,44 @@ stdenv.mkDerivation rec { sha256 = "1zp0pp5v3j8k6ail724p7h5jj2zmznj0a2ybwfw5sspfdw5bfydh"; }; - cmakeFlags = [ - "-DINTROSPECTION_GIRDIR=share/gir-1.0/" - "-DINTROSPECTION_TYPELIBDIR=lib/girepository-1.0" + patches = [ + # Add Meson support that hit after 5.2.2 + (fetchpatch { + url = "https://github.com/elementary/granite/commit/2066b377226cf327cb2d5399b6b40a2d36d47b11.patch"; + sha256 = "1bxjgq8wvl1sb79cwhmh9kwawnkkfn7c5q67cyz1fjxmamwyyi85"; + }) + (fetchpatch { + url = "https://github.com/elementary/granite/commit/f1b29f52e3aaf0f5d6bba44c42617da265f679c8.patch"; + sha256 = "0cdp9ny6fj1lpcirab641p1qn1rbsvnsaa03hnr6zsdpim96jlvs"; + }) + # Resolve the circular dependency between granite and the datetime wingpanel indicator + # See: https://github.com/elementary/granite/pull/242 + ./02-datetime-clock-format-gsettings.patch ]; nativeBuildInputs = [ - cmake gettext gobject-introspection + meson ninja pkgconfig + python3 vala_0_40 # should be `elementary.vala` when elementary attribute set is merged + wrapGAppsHook ]; buildInputs = [ glib - gnome3.libgee gtk3 + hicolor-icon-theme + gnome3.libgee ]; + postPatch = '' + chmod +x meson/post_install.py + patchShebangs meson/post_install.py + ''; + meta = with stdenv.lib; { description = "An extension to GTK+ used by elementary OS"; longDescription = ''