wiringop-rs/package.nix

79 lines
1.6 KiB
Nix
Raw Normal View History

2024-11-02 11:53:35 +00:00
{ lib
, stdenv
, symlinkJoin
, srcAll
, libxcrypt
}:
let
version = "master";
mkSubProject =
{ subprj
, # The only mandatory argument
buildInputs ? [ ]
, src ? srcAll
, extraPreInstall ? ""
,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "wiringpi-${subprj}";
inherit version src;
sourceRoot = "${src.name}/${subprj}";
inherit buildInputs;
# Remove (meant for other OSs) lines from Makefiles
preInstall = ''
sed -i "/chown root/d" Makefile
sed -i "/chmod/d" Makefile
'' + extraPreInstall;
makeFlags = [
"DESTDIR=${placeholder "out"}"
"PREFIX="
# On NixOS we don't need to run ldconfig during build:
"LDCONFIG=echo"
];
});
passthru = {
src = srcAll;
inherit mkSubProject;
wiringPi = mkSubProject {
subprj = "wiringPi";
buildInputs = [ libxcrypt ];
};
devLib = mkSubProject {
subprj = "devLib";
buildInputs = [ passthru.wiringPi ];
};
wiringPiD = mkSubProject {
subprj = "wiringPiD";
buildInputs = [
libxcrypt
passthru.wiringPi
passthru.devLib
];
};
gpio = mkSubProject {
subprj = "gpio";
extraPreInstall = ''
mkdir -p $out/bin
'';
buildInputs = [
libxcrypt
passthru.wiringPi
passthru.devLib
];
};
};
in
symlinkJoin {
name = "wiringop-${version}";
inherit passthru;
paths = builtins.attrValues {
inherit (passthru)
wiringPi
devLib
wiringPiD
gpio;
};
}