Greetings !
I am trying to package a .deb file from an open-source application as an exercise to improve my Nix-fu. I know the CLI version of the app exist in Nixpkgs.
Following the wiki, I have arrived at a point where no library in any of the shared library or executable is not found with this default.nix
:
Source code for default.nix
{ lib
, stdenv
, makeDesktopItem
, fetchurl
, dpkg
, pkgs
, alsaLib
, atk
, at_spi2_core
, cairo
, cups
, dbus_daemon
, expat
, xorg_sys_opengl
, gtk3-x11
, gdk-pixbuf
, glib
, nspr
, nss_3_53
, nssTools
, nwjs
, ffmpeg
, gnome2
, utillinux
, libuuid
, xlibs
, libsecret
, libgnome-keyring
, fontconfig
, wrapGAppsHook
, makeWrapper
, autoPatchelfHook
}:
let
desktopItem = makeDesktopItem {
type = "Application";
name = "OnlyKey";
desktopName = "OnlyKey";
exec = "$out/opt/OnlyKey/nw";
icon = "$out/opt/OnlyKey/icon.png";
};
inputs = [
alsaLib
at_spi2_core
atk
cairo
cups.lib
dbus_daemon.lib
ffmpeg
gdk-pixbuf
glib
gnome2.pango
gtk3-x11
libgnome-keyring
libsecret
nspr
nss_3_53
utillinux
xlibs.libX11
xlibs.libXScrnSaver
xlibs.libXcomposite
xlibs.libXcursor
xlibs.libXdamage
xlibs.libXfixes
xlibs.libXi
xlibs.libXrandr
xlibs.libXrender
xlibs.libXtst
xlibs.libxcb
xorg_sys_opengl
];
in
stdenv.mkDerivation rec {
pname = "OnlyKey";
version = "5.3.3";
src = fetchurl {
url = "https://github.com/trustcrypto/OnlyKey-App/releases/download/v${version}/OnlyKey_${version}_amd64.deb";
sha256 = "0qwf01v91b71xbmyndzzr1b7jxmym1x2kn9x8m4iwq6bwwwi2q8h";
};
buildInputs = [
dpkg
makeWrapper
wrapGAppsHook
autoPatchelfHook
] ++ inputs;
runtimeDependencies = [ fontconfig.lib ];
dontBuild = true;
dontConfigure = true;
unpackPhase = ''
dpkg-deb -x $src .
'';
installPhase = ''
mkdir -p $out/share
cp -r ./opt $out
cp -r "${desktopItem}/share/applications" "$out/share"
'';
}
But, of course, when launching the binary with ./result/opt/OnlyKey/nw
, I am greeted with
[3108436:3108443:0611/083318.158433:FATAL:udev_loader.cc(38)] Check failed: false.
#0 0x7fba9a2f1d1f <unknown>
[3108463:3108463:0611/083318.285342:ERROR:sandbox_linux.cc(366)] InitializeSandbox() called with multiple threads in process gpu-process.
[3108463:3108463:0611/083845.832143:ERROR:broker_posix.cc(43)] Invalid node channel message
and a non-responding terminal (I can only open a new session and kill the proccess). The second error seems to be known in chromium, the last one printing only when killing the process and the first one is leaving me clueless.
As far as I understand, it is some kind of Electron app using the library nwjs.
Here is a strace of the app launching.
Would anyone have an idea or faced a similar issue ?