1{ lib
2, stdenv
3, symlinkJoin
4, fetchFromGitHub
5, libxcrypt
6}:
7
8let
9 version = "2.61-1";
10 mkSubProject = { subprj # The only mandatory argument
11 , buildInputs ? []
12 , src ? fetchFromGitHub {
13 owner = "WiringPi";
14 repo = "WiringPi";
15 rev = version;
16 sha256 = "sha256-VxAaPhaPXd9xYt663Ju6SLblqiSLizauhhuFqCqbO5M=";
17 }
18 }: stdenv.mkDerivation rec {
19 pname = "wiringpi-${subprj}";
20 inherit version src;
21 sourceRoot = "source/${subprj}";
22 inherit buildInputs;
23 # Remove (meant for other OSs) lines from Makefiles
24 preInstall = ''
25 sed -i "/chown root/d" Makefile
26 sed -i "/chmod/d" Makefile
27 '';
28 makeFlags = [
29 "DESTDIR=${placeholder "out"}"
30 "PREFIX=/."
31 # On NixOS we don't need to run ldconfig during build:
32 "LDCONFIG=echo"
33 ];
34 };
35 passthru = {
36 inherit mkSubProject;
37 wiringPi = mkSubProject {
38 subprj = "wiringPi";
39 buildInputs = [
40 libxcrypt
41 ];
42 };
43 devLib = mkSubProject {
44 subprj = "devLib";
45 buildInputs = [
46 passthru.wiringPi
47 ];
48 };
49 wiringPiD = mkSubProject {
50 subprj = "wiringPiD";
51 buildInputs = [
52 libxcrypt
53 passthru.wiringPi
54 passthru.devLib
55 ];
56 };
57 gpio = mkSubProject {
58 subprj = "gpio";
59 buildInputs = [
60 libxcrypt
61 passthru.wiringPi
62 passthru.devLib
63 ];
64 };
65 };
66in
67
68symlinkJoin {
69 name = "wiringpi-${version}";
70 inherit passthru;
71 paths = [
72 passthru.wiringPi
73 passthru.devLib
74 passthru.wiringPiD
75 passthru.gpio
76 ];
77 meta = with lib; {
78 description = "Gordon's Arduino wiring-like WiringPi Library for the Raspberry Pi (Unofficial Mirror for WiringPi bindings)";
79 homepage = "https://github.com/WiringPi/WiringPi";
80 license = licenses.lgpl3Plus;
81 maintainers = with maintainers; [ doronbehar ];
82 platforms = platforms.linux;
83 };
84}