diff --git a/pkgs/applications/graphics/pencil/default.nix b/pkgs/applications/graphics/pencil/default.nix index 37857fc459ea..edd923822ea3 100644 --- a/pkgs/applications/graphics/pencil/default.nix +++ b/pkgs/applications/graphics/pencil/default.nix @@ -1,32 +1,72 @@ -{ stdenv, fetchurl, lib, makeWrapper, +{ stdenv, fetchurl, lib, makeWrapper, wrapGAppsHook, # build dependencies - alsaLib, atk, cairo, cups, dbus, expat, fontconfig, - freetype, gdk-pixbuf, glib, gnome2, nspr, nss, xorg, - glibc, systemd + alsaLib, atk, at-spi2-atk, at-spi2-core, cairo, cups, dbus, expat, fontconfig, + freetype, gdk-pixbuf, glib, glibc, gtk3, libuuid, nspr, nss, pango, + xorg, systemd }: +let -stdenv.mkDerivation rec { - version = "3.0.4"; + deps = [ + alsaLib + atk + at-spi2-atk + at-spi2-core + cairo + cups + dbus + expat + fontconfig + freetype + gdk-pixbuf + glib + glibc + gtk3 + libuuid + nspr + nss + pango + xorg.libX11 + xorg.libxcb + xorg.libXScrnSaver + xorg.libXcomposite + xorg.libXcursor + xorg.libXdamage + xorg.libXext + xorg.libXfixes + xorg.libXi + xorg.libXrandr + xorg.libXrender + xorg.libXtst + stdenv.cc.cc.lib + stdenv.cc.cc + ]; + +in stdenv.mkDerivation rec { + version = "3.1.0"; pname = "pencil"; src = fetchurl { - url = "http://pencil.evolus.vn/dl/V${version}/Pencil_${version}_amd64.deb"; - sha256 = "58e2b794c615ea8715d8374f177e19c87f7071e359826ec34a59836d537a62fd"; + url = "http://pencil.evolus.vn/dl/V${version}.ga/pencil_${version}.ga_amd64.deb"; + sha256 = "01ae54b1a1351b909eb2366c6ec00816e1deba370e58f35601cf7368f10aaba3"; }; sourceRoot = "."; unpackCmd = '' - ar p "$src" data.tar.xz | tar xJ + ar p "$src" data.tar.gz | tar xz ''; dontBuild = true; - nativeBuildInputs = [ makeWrapper ]; + nativeBuildInputs = [ makeWrapper wrapGAppsHook ]; + + buildInputs = deps; installPhase = '' - mkdir -p $out/bin - cp -R usr/share opt $out/ + mkdir -p $out/bin $out/opt $out/share/applications + cp -R usr/share $out/ + cp -R opt/pencil*/ $out/opt/pencil + cp $out/opt/pencil/pencil.desktop $out/share/applications/ # fix the path in the desktop file substituteInPlace \ @@ -34,42 +74,12 @@ stdenv.mkDerivation rec { --replace /opt/ $out/opt/ # symlink the binary to bin/ - ln -s $out/opt/Pencil/pencil $out/bin/pencil + ln -s $out/opt/pencil/pencil $out/bin/pencil ''; preFixup = let - packages = [ - alsaLib - atk - cairo - cups - dbus - expat - fontconfig - freetype - gdk-pixbuf - glib - gnome2.GConf - gnome2.gtk - gnome2.pango - nspr - nss - xorg.libX11 - xorg.libXScrnSaver - xorg.libXcomposite - xorg.libXcursor - xorg.libXdamage - xorg.libXext - xorg.libXfixes - xorg.libXi - xorg.libXrandr - xorg.libXrender - xorg.libXtst - stdenv.cc.cc.lib - stdenv.cc.cc - glibc - ]; + packages = deps; libPathNative = lib.makeLibraryPath packages; libPath64 = lib.makeSearchPathOutput "lib" "lib64" packages; libPath = "${libPathNative}:${libPath64}"; @@ -77,21 +87,13 @@ stdenv.mkDerivation rec { # patch executable patchelf \ --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ - --set-rpath "${libPath}:$out/opt/Pencil" \ - $out/opt/Pencil/pencil - - # patch libnode - patchelf \ - --set-rpath "${libPath}" \ - $out/opt/Pencil/libnode.so - - # libffmpeg is for some reason not executable - chmod a+x $out/opt/Pencil/libffmpeg.so + --set-rpath "${libPath}:$out/opt/pencil" \ + $out/opt/pencil/pencil # fix missing libudev - ln -s ${systemd.lib}/lib/libudev.so.1 $out/opt/Pencil/libudev.so.1 - wrapProgram $out/opt/Pencil/pencil \ - --prefix LD_LIBRARY_PATH : $out/opt/Pencil + ln -s ${systemd.lib}/lib/libudev.so.1 $out/opt/pencil/libudev.so.1 + wrapProgram $out/opt/pencil/pencil \ + --prefix LD_LIBRARY_PATH : $out/opt/pencil ''; meta = with stdenv.lib; {