pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / by-name / bl / bluez-alsa / package.nix
blob911efe4a564451c54a40e1bdd9705f2fe7fd8aed
1 { lib
2 , stdenv
3 , aacSupport ? true
4 , alsa-lib
5 , autoreconfHook
6 , bluez
7 , dbus
8 , fdk_aac
9 , fetchFromGitHub
10 , gitUpdater
11 , glib
12 , libbsd
13 , ncurses
14 , pkg-config
15 , readline
16 , sbc
19 stdenv.mkDerivation (finalAttrs: {
20   pname = "bluez-alsa";
21   version = "4.1.1";
23   src = fetchFromGitHub {
24     owner = "Arkq";
25     repo = "bluez-alsa";
26     rev = "v${finalAttrs.version}";
27     hash = "sha256-oGaYiSkOhqfjUl+mHTs3gqFcxli3cgkRtT6tbjy3ht0=";
28   };
30   nativeBuildInputs = [
31     autoreconfHook
32     pkg-config
33   ];
35   buildInputs = [
36     alsa-lib
37     bluez
38     glib
39     sbc
40     dbus
41     readline
42     libbsd
43     ncurses
44   ] ++ lib.optionals aacSupport [
45     fdk_aac
46   ];
48   configureFlags = [
49     (lib.enableFeature aacSupport "aac")
50     (lib.enableFeature true "hcitop")
51     (lib.enableFeature true "rfcomm")
52     (lib.withFeatureAs true "alsaplugindir" "${placeholder "out"}/lib/alsa-lib")
53     (lib.withFeatureAs true "dbusconfdir" "${placeholder "out"}/share/dbus-1/system.d")
54   ];
56   passthru.updateScript = gitUpdater { };
58   meta = {
59     homepage = "https://github.com/Arkq/bluez-alsa";
60     description = "Bluez 5 Bluetooth Audio ALSA Backend";
61     longDescription = ''
62       Bluez-ALSA (BlueALSA) is an ALSA backend for Bluez 5 audio interface.
63       Bluez-ALSA registers all Bluetooth devices with audio profiles in Bluez
64       under a virtual ALSA PCM device called `bluealsa` that supports both
65       playback and capture.
67       Some backstory: Bluez 5 removed built-in support for ALSA in favor of a
68       generic interface for 3rd party appliations. Thereafter, PulseAudio
69       implemented a backend for that interface and became the only way to get
70       Bluetooth audio with Bluez 5. Users prefering ALSA stayed on Bluez 4.
71       However, Bluez 4 eventually became deprecated.
73       This package is a rebirth of a direct interface between ALSA and Bluez 5,
74       that, unlike PulseAudio, provides KISS near-metal-like experience. It is
75       not possible to run BluezALSA and PulseAudio Bluetooth at the same time
76       due to limitations in Bluez, but it is possible to run PulseAudio over
77       BluezALSA if you disable `bluetooth-discover` and `bluez5-discover`
78       modules in PA and configure it to play/capture sound over `bluealsa` PCM.
79     '';
80     license = with lib.licenses; [ mit ];
81     mainProgram = "bluealsa";
82     maintainers = with lib.maintainers; [ AndersonTorres oxij ];
83     platforms = lib.platforms.linux;
84   };
86 # TODO: aptxSupport