1{
2 stdenv,
3 lib,
4 makeWrapper,
5 fetchFromGitHub,
6 ocaml,
7 pkg-config,
8 mupdf,
9 libX11,
10 jbig2dec,
11 openjpeg,
12 libjpeg,
13 lcms2,
14 harfbuzz,
15 libGLU,
16 libGL,
17 gumbo,
18 freetype,
19 zlib,
20 xclip,
21 inotify-tools,
22 procps,
23}:
24
25assert lib.versionAtLeast (lib.getVersion ocaml) "4.07";
26
27stdenv.mkDerivation rec {
28 pname = "llpp";
29 version = "42";
30
31 src = fetchFromGitHub {
32 owner = "criticic";
33 repo = "llpp";
34 rev = "v${version}";
35 hash = "sha256-B/jKvBtBwMOErUVmGFGXXIT8FzMl1DFidfDCHIH41TU=";
36 };
37
38 postPatch = ''
39 sed -i "2d;s/ver=.*/ver=${version}/" build.bash
40 '';
41
42 strictDeps = true;
43
44 nativeBuildInputs = [
45 makeWrapper
46 ocaml
47 pkg-config
48 ];
49 buildInputs = [
50 mupdf
51 libX11
52 freetype
53 zlib
54 gumbo
55 jbig2dec
56 openjpeg
57 libjpeg
58 lcms2
59 harfbuzz
60 ]
61 ++ lib.optionals stdenv.hostPlatform.isLinux [
62 libGLU
63 libGL
64 ];
65
66 dontStrip = true;
67
68 buildPhase = ''
69 bash ./build.bash build
70 '';
71
72 installPhase = ''
73 install -d $out/bin
74 install build/llpp $out/bin
75 install misc/llpp.inotify $out/bin/llpp.inotify
76 install -Dm444 misc/llpp.desktop -t $out/share/applications
77 ''
78 + lib.optionalString stdenv.hostPlatform.isLinux ''
79 wrapProgram $out/bin/llpp \
80 --prefix PATH ":" "${xclip}/bin"
81
82 wrapProgram $out/bin/llpp.inotify \
83 --prefix PATH ":" "$out/bin" \
84 --prefix PATH ":" "${inotify-tools}/bin" \
85 --prefix PATH ":" "${procps}/bin"
86 '';
87
88 meta = with lib; {
89 homepage = "https://github.com/criticic/llpp";
90 description = "MuPDF based PDF pager written in OCaml";
91 platforms = platforms.linux ++ platforms.darwin;
92 maintainers = with maintainers; [ pSub ];
93 license = [
94 licenses.publicDomain
95 licenses.bsd3
96 ];
97 };
98}