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