biome: 1.9.2 -> 1.9.3 (#349335)
[NixPkgs.git] / pkgs / applications / graphics / pencil / default.nix
blob4b7b6f9b6a47837cd12a925a8d15e156acef0370
1 { stdenv, fetchurl, lib, makeWrapper, wrapGAppsHook3,
2   # build dependencies
3   alsa-lib, atk, at-spi2-atk, at-spi2-core, cairo, cups, dbus, expat, fontconfig,
4   freetype, gdk-pixbuf, glib, glibc, gtk3, libuuid, nspr, nss, pango,
5   xorg, systemd
6 }:
7 let
9   deps = [
10     alsa-lib
11     atk
12     at-spi2-atk
13     at-spi2-core
14     cairo
15     cups
16     dbus
17     expat
18     fontconfig
19     freetype
20     gdk-pixbuf
21     glib
22     glibc
23     gtk3
24     libuuid
25     nspr
26     nss
27     pango
28     xorg.libX11
29     xorg.libxcb
30     xorg.libXScrnSaver
31     xorg.libXcomposite
32     xorg.libXcursor
33     xorg.libXdamage
34     xorg.libXext
35     xorg.libXfixes
36     xorg.libXi
37     xorg.libXrandr
38     xorg.libXrender
39     xorg.libXtst
40     stdenv.cc.cc.lib
41     stdenv.cc.cc
42   ];
44 in stdenv.mkDerivation rec {
45   version = "3.1.0";
46   pname = "pencil";
48   src = fetchurl {
49     url    = "http://pencil.evolus.vn/dl/V${version}.ga/pencil_${version}.ga_amd64.deb";
50     sha256 = "01ae54b1a1351b909eb2366c6ec00816e1deba370e58f35601cf7368f10aaba3";
51   };
53   sourceRoot = ".";
55   unpackCmd = ''
56     ar p "$src" data.tar.gz | tar xz
57   '';
59   dontBuild = true;
61   nativeBuildInputs = [ makeWrapper wrapGAppsHook3 ];
63   buildInputs = deps;
65   installPhase = ''
66     mkdir -p $out/bin $out/opt $out/share/applications
67     cp -R usr/share $out/
68     cp -R opt/pencil*/ $out/opt/pencil
69     cp $out/opt/pencil/pencil.desktop $out/share/applications/
71     # fix the path in the desktop file
72     substituteInPlace \
73       $out/share/applications/pencil.desktop \
74       --replace /opt/ $out/opt/
76     # symlink the binary to bin/
77     ln -s $out/opt/pencil/pencil $out/bin/pencil
78   '';
81   preFixup = let
82     packages = deps;
83     libPathNative = lib.makeLibraryPath packages;
84     libPath64 = lib.makeSearchPathOutput "lib" "lib64" packages;
85     libPath = "${libPathNative}:${libPath64}";
86   in ''
87     # patch executable
88     patchelf \
89       --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
90       --set-rpath "${libPath}:$out/opt/pencil" \
91       $out/opt/pencil/pencil
93     # fix missing libudev
94     ln -s ${lib.getLib systemd}/lib/libudev.so.1 $out/opt/pencil/libudev.so.1
95     wrapProgram $out/opt/pencil/pencil \
96       --prefix LD_LIBRARY_PATH : $out/opt/pencil
97   '';
99   meta = with lib; {
100     description = "GUI prototyping/mockup tool";
101     mainProgram = "pencil";
102     homepage    = "https://pencil.evolus.vn/";
103     sourceProvenance = with sourceTypes; [ binaryNativeCode ];
104     license     = licenses.gpl2; # Commercial license is also available
105     maintainers = with maintainers; [ bjornfor prikhi mrVanDalo ];
106     platforms   = platforms.linux;
107   };