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