diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/qgnomeplatform')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/qgnomeplatform/default.nix | 65 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/qgnomeplatform/hardcode-gsettings.patch | 25 |
2 files changed, 90 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/qgnomeplatform/default.nix b/nixpkgs/pkgs/development/libraries/qgnomeplatform/default.nix new file mode 100644 index 000000000000..cc8ddf43c021 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/qgnomeplatform/default.nix @@ -0,0 +1,65 @@ +{ mkDerivation +, lib +, fetchFromGitHub +, nix-update-script +, cmake +, pkg-config +, adwaita-qt +, glib +, gtk3 +, qtbase +, pantheon +, substituteAll +, gsettings-desktop-schemas +}: + +mkDerivation rec { + pname = "qgnomeplatform"; + version = "0.8.4"; + + src = fetchFromGitHub { + owner = "FedoraQt"; + repo = "QGnomePlatform"; + rev = version; + sha256 = "sha256-DaIBtWmce+58OOhqFG5802c3EprBAtDXhjiSPIImoOM="; + }; + + patches = [ + # Hardcode GSettings schema path to avoid crashes from missing schemas + (substituteAll { + src = ./hardcode-gsettings.patch; + gds_gsettings_path = glib.getSchemaPath gsettings-desktop-schemas; + }) + ]; + + nativeBuildInputs = [ + cmake + pkg-config + ]; + + buildInputs = [ + adwaita-qt + glib + gtk3 + qtbase + ]; + + cmakeFlags = [ + "-DGLIB_SCHEMAS_DIR=${glib.getSchemaPath gsettings-desktop-schemas}" + "-DQT_PLUGINS_DIR=${placeholder "out"}/${qtbase.qtPluginPrefix}" + ]; + + passthru = { + updateScript = nix-update-script { + attrPath = pname; + }; + }; + + meta = with lib; { + description = "QPlatformTheme for a better Qt application inclusion in GNOME"; + homepage = "https://github.com/FedoraQt/QGnomePlatform"; + license = licenses.lgpl21Plus; + maintainers = teams.gnome.members ++ (with maintainers; [ ]); + platforms = platforms.linux; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/qgnomeplatform/hardcode-gsettings.patch b/nixpkgs/pkgs/development/libraries/qgnomeplatform/hardcode-gsettings.patch new file mode 100644 index 000000000000..40f7f98f25c7 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/qgnomeplatform/hardcode-gsettings.patch @@ -0,0 +1,25 @@ +diff --git a/src/common/gnomesettings.cpp b/src/common/gnomesettings.cpp +index 717cc9b..ee255ea 100644 +--- a/src/common/gnomesettings.cpp ++++ b/src/common/gnomesettings.cpp +@@ -150,10 +150,18 @@ GnomeSettingsPrivate::GnomeSettingsPrivate(QObject *parent) + : GnomeSettings(parent) + , m_usePortal(checkUsePortalSupport()) + , m_canUseFileChooserPortal(!m_usePortal) +- , m_gnomeDesktopSettings(g_settings_new("org.gnome.desktop.wm.preferences")) +- , m_settings(g_settings_new("org.gnome.desktop.interface")) + , m_fallbackFont(new QFont(QLatin1String("Sans"), 10)) + { ++ g_autoptr(GSettingsSchemaSource) schemaSource = nullptr; ++ g_autoptr(GSettingsSchema) gnomeDesktopSchema = nullptr; ++ g_autoptr(GSettingsSchema) settingsSchema = nullptr; ++ ++ schemaSource = g_settings_schema_source_new_from_directory("@gds_gsettings_path@", g_settings_schema_source_get_default(), true, nullptr); ++ gnomeDesktopSchema = g_settings_schema_source_lookup(schemaSource, "org.gnome.desktop.wm.preferences", false); ++ m_gnomeDesktopSettings = g_settings_new_full(gnomeDesktopSchema, nullptr, nullptr); ++ settingsSchema = g_settings_schema_source_lookup(schemaSource, "org.gnome.desktop.interface", false); ++ m_settings = g_settings_new_full(settingsSchema, nullptr, nullptr); ++ + gtk_init(nullptr, nullptr); + + // Set log handler to suppress false GtkDialog warnings |