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