1{ stdenv, fetchFromGitHub, fetchpatch, pkgconfig, cmake
2
3# dependencies
4, glib, libXinerama
5
6# optional features without extra dependencies
7, mpdSupport ? true
8, ibmSupport ? true # IBM/Lenovo notebooks
9
10# optional features with extra dependencies
11
12# ouch, this is ugly, but this gives the man page
13, docsSupport ? true, docbook2x, libxslt ? null
14 , man ? null, less ? null
15 , docbook_xsl ? null , docbook_xml_dtd_44 ? null
16
17, ncursesSupport ? true , ncurses ? null
18, x11Support ? true , xlibsWrapper ? null
19, xdamageSupport ? x11Support, libXdamage ? null
20, doubleBufferSupport ? x11Support
21, imlib2Support ? x11Support, imlib2 ? null
22
23, luaSupport ? true , lua ? null
24, luaImlib2Support ? luaSupport && imlib2Support
25, luaCairoSupport ? luaSupport && x11Support, cairo ? null
26, toluapp ? null
27
28, wirelessSupport ? true , wirelesstools ? null
29, nvidiaSupport ? false , libXNVCtrl ? null
30
31, curlSupport ? true , curl ? null
32, rssSupport ? curlSupport
33, weatherMetarSupport ? curlSupport
34, weatherXoapSupport ? curlSupport
35, libxml2 ? null
36}:
37
38assert docsSupport -> docbook2x != null && libxslt != null
39 && man != null && less != null
40 && docbook_xsl != null && docbook_xml_dtd_44 != null;
41
42assert ncursesSupport -> ncurses != null;
43
44assert x11Support -> xlibsWrapper != null;
45assert xdamageSupport -> x11Support && libXdamage != null;
46assert imlib2Support -> x11Support && imlib2 != null;
47assert luaSupport -> lua != null;
48assert luaImlib2Support -> luaSupport && imlib2Support
49 && toluapp != null;
50assert luaCairoSupport -> luaSupport && toluapp != null
51 && cairo != null;
52assert luaCairoSupport || luaImlib2Support
53 -> lua.luaversion == "5.1";
54
55assert wirelessSupport -> wirelesstools != null;
56assert nvidiaSupport -> libXNVCtrl != null;
57
58assert curlSupport -> curl != null;
59assert rssSupport -> curlSupport && libxml2 != null;
60assert weatherMetarSupport -> curlSupport;
61assert weatherXoapSupport -> curlSupport && libxml2 != null;
62
63with stdenv.lib;
64
65stdenv.mkDerivation rec {
66 name = "conky-${version}";
67 version = "1.10.8";
68
69 src = fetchFromGitHub {
70 owner = "brndnmtthws";
71 repo = "conky";
72 rev = "v${version}";
73 sha256 = "18kxjmaplqvn81vmvybvpc9qczm7wgcgd4af3a8vsqdv77cn5bwq";
74 };
75
76 postPatch = ''
77 sed -i -e '/include.*CheckIncludeFile)/i include(CheckIncludeFiles)' \
78 cmake/ConkyPlatformChecks.cmake
79 '' + optionalString docsSupport ''
80 # Drop examples, since they contain non-ASCII characters that break docbook2x :(
81 sed -i 's/ Example: .*$//' doc/config_settings.xml
82
83 substituteInPlace cmake/Conky.cmake --replace "#set(RELEASE true)" "set(RELEASE true)"
84 '';
85
86 NIX_LDFLAGS = "-lgcc_s";
87
88 nativeBuildInputs = [ cmake pkgconfig ];
89 buildInputs = [ glib libXinerama ]
90 ++ optionals docsSupport [ docbook2x docbook_xsl docbook_xml_dtd_44 libxslt man less ]
91 ++ optional ncursesSupport ncurses
92 ++ optional x11Support xlibsWrapper
93 ++ optional xdamageSupport libXdamage
94 ++ optional imlib2Support imlib2
95 ++ optional luaSupport lua
96 ++ optionals luaImlib2Support [ toluapp imlib2 ]
97 ++ optionals luaCairoSupport [ toluapp cairo ]
98 ++ optional wirelessSupport wirelesstools
99 ++ optional curlSupport curl
100 ++ optional rssSupport libxml2
101 ++ optional weatherXoapSupport libxml2
102 ++ optional nvidiaSupport libXNVCtrl
103 ;
104
105 cmakeFlags = []
106 ++ optional docsSupport "-DMAINTAINER_MODE=ON"
107 ++ optional curlSupport "-DBUILD_CURL=ON"
108 ++ optional (!ibmSupport) "-DBUILD_IBM=OFF"
109 ++ optional imlib2Support "-DBUILD_IMLIB2=ON"
110 ++ optional luaCairoSupport "-DBUILD_LUA_CAIRO=ON"
111 ++ optional luaImlib2Support "-DBUILD_LUA_IMLIB2=ON"
112 ++ optional (!mpdSupport) "-DBUILD_MPD=OFF"
113 ++ optional (!ncursesSupport) "-DBUILD_NCURSES=OFF"
114 ++ optional rssSupport "-DBUILD_RSS=ON"
115 ++ optional (!x11Support) "-DBUILD_X11=OFF"
116 ++ optional xdamageSupport "-DBUILD_XDAMAGE=ON"
117 ++ optional doubleBufferSupport "-DBUILD_XDBE=ON"
118 ++ optional weatherMetarSupport "-DBUILD_WEATHER_METAR=ON"
119 ++ optional weatherXoapSupport "-DBUILD_WEATHER_XOAP=ON"
120 ++ optional wirelessSupport "-DBUILD_WLAN=ON"
121 ++ optional nvidiaSupport "-DBUILD_NVIDIA=ON"
122 ;
123
124 # `make -f src/CMakeFiles/conky.dir/build.make src/CMakeFiles/conky.dir/conky.cc.o`:
125 # src/conky.cc:137:23: fatal error: defconfig.h: No such file or directory
126 enableParallelBuilding = false;
127
128 meta = with stdenv.lib; {
129 homepage = http://conky.sourceforge.net/;
130 description = "Advanced, highly configurable system monitor based on torsmo";
131 maintainers = [ maintainers.guibert ];
132 license = licenses.gpl3Plus;
133 platforms = platforms.linux;
134 };
135}