Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at fix-function-merge 156 lines 6.2 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, waylandSupport ? true , pango, wayland, wayland-protocols, wayland-scanner 20, xdamageSupport ? x11Support, libXdamage ? null 21, doubleBufferSupport ? x11Support 22, imlib2Support ? x11Support, imlib2 ? null 23 24, luaSupport ? true , lua ? null 25, luaImlib2Support ? luaSupport && imlib2Support 26, luaCairoSupport ? luaSupport && (x11Support || waylandSupport), cairo ? null 27, toluapp ? null 28 29, wirelessSupport ? true , wirelesstools ? null 30, nvidiaSupport ? false , libXNVCtrl ? null 31, pulseSupport ? config.pulseaudio or false, libpulseaudio ? null 32 33, curlSupport ? true , curl ? null 34, rssSupport ? curlSupport 35, weatherMetarSupport ? curlSupport 36, weatherXoapSupport ? curlSupport 37, journalSupport ? true, systemd ? null 38, libxml2 ? null 39}: 40 41assert docsSupport -> docbook2x != null && libxslt != null 42 && man != null && less != null 43 && docbook_xsl != null && docbook_xml_dtd_44 != null; 44 45assert ncursesSupport -> ncurses != null; 46 47assert xdamageSupport -> x11Support && libXdamage != null; 48assert imlib2Support -> x11Support && imlib2 != null; 49assert luaSupport -> lua != null; 50assert luaImlib2Support -> luaSupport && imlib2Support 51 && toluapp != null; 52assert luaCairoSupport -> luaSupport && toluapp != null 53 && cairo != null; 54assert luaCairoSupport || luaImlib2Support 55 -> lua.luaversion == "5.4"; 56 57assert wirelessSupport -> wirelesstools != null; 58assert nvidiaSupport -> libXNVCtrl != null; 59assert pulseSupport -> libpulseaudio != null; 60 61assert curlSupport -> curl != null; 62assert rssSupport -> curlSupport && libxml2 != null; 63assert weatherMetarSupport -> curlSupport; 64assert weatherXoapSupport -> curlSupport && libxml2 != null; 65assert journalSupport -> systemd != null; 66 67with lib; 68 69stdenv.mkDerivation rec { 70 pname = "conky"; 71 version = "1.19.6"; 72 73 src = fetchFromGitHub { 74 owner = "brndnmtthws"; 75 repo = "conky"; 76 rev = "v${version}"; 77 hash = "sha256-L8YSbdk+qQl17L4IRajFD/AEWRXb2w7xH9sM9qPGrQo="; 78 }; 79 80 postPatch = optionalString docsSupport '' 81 substituteInPlace cmake/Conky.cmake --replace "# set(RELEASE true)" "set(RELEASE true)" 82 83 cp ${catch2}/include/catch2/catch.hpp tests/catch2/catch.hpp 84 '' + optionalString waylandSupport '' 85 substituteInPlace src/CMakeLists.txt \ 86 --replace 'COMMAND ''${Wayland_SCANNER}' 'COMMAND wayland-scanner' 87 ''; 88 89 env = { 90 # For some reason -Werror is on by default, causing the project to fail compilation. 91 NIX_CFLAGS_COMPILE = "-Wno-error"; 92 NIX_LDFLAGS = "-lgcc_s"; 93 }; 94 95 nativeBuildInputs = [ cmake pkg-config ] 96 ++ optionals docsSupport [ docbook2x docbook_xsl docbook_xml_dtd_44 libxslt man less ] 97 ++ optional waylandSupport wayland-scanner 98 ++ optional luaImlib2Support toluapp 99 ++ optional luaCairoSupport toluapp 100 ; 101 buildInputs = [ glib libXinerama ] 102 ++ optional ncursesSupport ncurses 103 ++ optionals x11Support [ freetype xorg.libICE xorg.libX11 xorg.libXext xorg.libXft xorg.libSM ] 104 ++ optionals waylandSupport [ pango wayland wayland-protocols ] 105 ++ optional xdamageSupport libXdamage 106 ++ optional imlib2Support imlib2 107 ++ optional luaSupport lua 108 ++ optional luaImlib2Support imlib2 109 ++ optional luaCairoSupport cairo 110 ++ optional wirelessSupport wirelesstools 111 ++ optional curlSupport curl 112 ++ optional rssSupport libxml2 113 ++ optional weatherXoapSupport libxml2 114 ++ optional nvidiaSupport libXNVCtrl 115 ++ optional pulseSupport libpulseaudio 116 ++ optional journalSupport systemd 117 ; 118 119 cmakeFlags = [] 120 ++ optional docsSupport "-DMAINTAINER_MODE=ON" 121 ++ optional curlSupport "-DBUILD_CURL=ON" 122 ++ optional (!ibmSupport) "-DBUILD_IBM=OFF" 123 ++ optional imlib2Support "-DBUILD_IMLIB2=ON" 124 ++ optional luaCairoSupport "-DBUILD_LUA_CAIRO=ON" 125 ++ optional luaImlib2Support "-DBUILD_LUA_IMLIB2=ON" 126 ++ optional (!mpdSupport) "-DBUILD_MPD=OFF" 127 ++ optional (!ncursesSupport) "-DBUILD_NCURSES=OFF" 128 ++ optional rssSupport "-DBUILD_RSS=ON" 129 ++ optional (!x11Support) "-DBUILD_X11=OFF" 130 ++ optional waylandSupport "-DBUILD_WAYLAND=ON" 131 ++ optional xdamageSupport "-DBUILD_XDAMAGE=ON" 132 ++ optional doubleBufferSupport "-DBUILD_XDBE=ON" 133 ++ optional weatherMetarSupport "-DBUILD_WEATHER_METAR=ON" 134 ++ optional weatherXoapSupport "-DBUILD_WEATHER_XOAP=ON" 135 ++ optional wirelessSupport "-DBUILD_WLAN=ON" 136 ++ optional nvidiaSupport "-DBUILD_NVIDIA=ON" 137 ++ optional pulseSupport "-DBUILD_PULSEAUDIO=ON" 138 ++ optional journalSupport "-DBUILD_JOURNAL=ON" 139 ; 140 141 # `make -f src/CMakeFiles/conky.dir/build.make src/CMakeFiles/conky.dir/conky.cc.o`: 142 # src/conky.cc:137:23: fatal error: defconfig.h: No such file or directory 143 enableParallelBuilding = false; 144 145 doCheck = true; 146 147 meta = with lib; { 148 homepage = "https://conky.cc"; 149 changelog = "https://github.com/brndnmtthws/conky/releases/tag/v${version}"; 150 description = "Advanced, highly configurable system monitor based on torsmo"; 151 mainProgram = "conky"; 152 maintainers = [ maintainers.guibert ]; 153 license = licenses.gpl3Plus; 154 platforms = platforms.linux; 155 }; 156}