chatterino2: fix: Could not find the Qt platform plugin "cocoa" in ""

wrapQtAppsHook ignores Mach-O binaries [1]. Additionally, wrapQtAppsHook
doesn't look inside $out/Applications [2], which is where chatterino2 is
installed. This means chatterino2 for Darwin/macOS is not wrapped
properly, causing the following error when launched:

> qt.qpa.plugin: Could not find the Qt platform plugin "cocoa" in ""
>
> This application failed to start because no Qt platform plugin could
> be initialized. Reinstalling the application may fix this problem.

On macOS, explicitly wrap chatterino2's executable.

[1] pkgs/development/libraries/qt-5/hooks/wrap-qt-apps-hook.sh line 85
[2] pkgs/development/libraries/qt-5/hooks/wrap-qt-apps-hook.sh line 76
This commit is contained in:
Matthew Glazar 2020-02-01 19:55:55 -08:00
parent cdd1c216ff
commit 1221a6b096

View File

@ -1,4 +1,4 @@
{ mkDerivation, stdenv, lib, pkgconfig, fetchFromGitHub, qtbase, qtsvg, qtmultimedia, qmake, boost, openssl }:
{ mkDerivation, stdenv, lib, pkgconfig, fetchFromGitHub, qtbase, qtsvg, qtmultimedia, qmake, boost, openssl, wrapQtAppsHook }:
mkDerivation rec {
pname = "chatterino2";
@ -10,12 +10,15 @@ mkDerivation rec {
sha256 = "0i2385hamhd9i7jdy906cfrd81cybw524j92l87c8pzrkxphignk";
fetchSubmodules = true;
};
nativeBuildInputs = [ qmake pkgconfig ];
nativeBuildInputs = [ qmake pkgconfig wrapQtAppsHook ];
buildInputs = [ qtbase qtsvg qtmultimedia boost openssl ];
postInstall = lib.optionalString stdenv.isDarwin ''
mkdir -p "$out/Applications"
mv bin/chatterino.app "$out/Applications/"
'';
postFixup = lib.optionalString stdenv.isDarwin ''
wrapQtApp "$out/Applications/chatterino.app/Contents/MacOS/chatterino"
'';
meta = with lib; {
description = "A chat client for Twitch chat";
longDescription = ''