1{
2 lib,
3 stdenv,
4 fetchurl,
5 pkg-config,
6
7 # Optional Dependencies
8 alsa-lib ? null,
9 db ? null,
10 libuuid ? null,
11 libffado ? null,
12 celt_0_7 ? null,
13
14 testers,
15}:
16
17let
18 shouldUsePkg =
19 pkg: if pkg != null && lib.meta.availableOn stdenv.hostPlatform pkg then pkg else null;
20
21 optAlsaLib = shouldUsePkg alsa-lib;
22 optDb = shouldUsePkg db;
23 optLibuuid = shouldUsePkg libuuid;
24 optLibffado = shouldUsePkg libffado;
25 optCelt = shouldUsePkg celt_0_7;
26in
27stdenv.mkDerivation (finalAttrs: {
28 pname = "jack1";
29 version = "0.126.0";
30
31 src = fetchurl {
32 url = "https://github.com/jackaudio/jack1/releases/download/${finalAttrs.version}/jack1-${finalAttrs.version}.tar.gz";
33 hash = "sha256-eykOnce5JirDKNQe74DBBTyXAT76y++jBHfLmypUReo=";
34 };
35
36 configureFlags = [
37 (lib.enableFeature (optLibffado != null) "firewire")
38 ];
39
40 nativeBuildInputs = [ pkg-config ];
41 buildInputs = [
42 optAlsaLib
43 optDb
44 optLibffado
45 optCelt
46 ];
47 propagatedBuildInputs = [ optLibuuid ];
48
49 passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
50
51 meta = with lib; {
52 broken = stdenv.hostPlatform.isDarwin;
53 description = "JACK audio connection kit";
54 homepage = "https://jackaudio.org";
55 license = with licenses; [
56 gpl2Plus
57 lgpl21
58 ];
59 pkgConfigModules = [ "jack" ];
60 platforms = platforms.unix;
61 };
62})