1{
2 fetchFromGitHub,
3 lib,
4 stdenv,
5 autoconf,
6 automake,
7 pkg-config,
8 m4,
9 curl,
10 libGLU,
11 libGL,
12 libXmu,
13 libXi,
14 libglut,
15 libjpeg,
16 libtool,
17 wxGTK32,
18 xcbutil,
19 sqlite,
20 gtk3,
21 patchelf,
22 libXScrnSaver,
23 libnotify,
24 libX11,
25 libxcb,
26 headless ? false,
27}:
28
29stdenv.mkDerivation rec {
30 pname = "boinc";
31 version = "8.2.4";
32
33 src = fetchFromGitHub {
34 name = "${pname}-${version}-src";
35 owner = "BOINC";
36 repo = "boinc";
37 rev = "client_release/${lib.versions.majorMinor version}/${version}";
38 hash = "sha256-VRYkh7MM8Oq1/alSbZL1w76DtUc0731VAMLUZW32rA8=";
39 };
40
41 nativeBuildInputs = [
42 libtool
43 automake
44 autoconf
45 m4
46 pkg-config
47 ];
48
49 buildInputs = [
50 curl
51 sqlite
52 patchelf
53 ]
54 ++ lib.optionals (!headless) [
55 libGLU
56 libGL
57 libXmu
58 libXi
59 libglut
60 libjpeg
61 wxGTK32
62 gtk3
63 libXScrnSaver
64 libnotify
65 libX11
66 libxcb
67 xcbutil
68 ];
69
70 NIX_LDFLAGS = lib.optionalString (!headless) "-lX11";
71
72 preConfigure = ''
73 ./_autosetup
74 '';
75
76 enableParallelBuilding = true;
77
78 configureFlags = [
79 "--disable-server"
80 "--sysconfdir=${placeholder "out"}/etc"
81 ]
82 ++ lib.optionals headless [ "--disable-manager" ];
83
84 postInstall = ''
85 install --mode=444 -D 'client/scripts/boinc-client.service' "$out/etc/systemd/system/boinc.service"
86 '';
87
88 meta = with lib; {
89 description = "Free software for distributed and grid computing";
90 homepage = "https://boinc.berkeley.edu/";
91 license = licenses.lgpl2Plus;
92 platforms = platforms.linux;
93 maintainers = with maintainers; [ Luflosi ];
94 };
95}