Merge pull request #330634 from r-ryantm/auto-update/circumflex
[NixPkgs.git] / pkgs / servers / shairport-sync / default.nix
bloba9043f65331d0df4a49ba8320427f9399e39fa07
1 { lib
2 , stdenv
3 , fetchFromGitHub
4 , autoreconfHook
5 , pkg-config
6 , openssl
7 , avahi
8 , alsa-lib
9 , libplist
10 , glib
11 , libdaemon
12 , libsodium
13 , libgcrypt
14 , ffmpeg
15 , libuuid
16 , unixtools
17 , popt
18 , libconfig
19 , libpulseaudio
20 , libjack2
21 , pipewire
22 , soxr
23 , enableAirplay2 ? false
24 , enableStdout ? true
25 , enableAlsa ? true
26 , enablePulse ? true
27 , enablePipe ? true
28 , enablePipewire ? true
29 , enableJack ? true
30 , enableMetadata ? false
31 , enableMpris ? stdenv.isLinux
32 , enableDbus ? stdenv.isLinux
33 , enableSoxr ? true
34 , enableLibdaemon ? false
37 let
38   inherit (lib) optional optionals;
41 stdenv.mkDerivation rec {
42   pname = "shairport-sync";
43   version = "4.3.4";
45   src = fetchFromGitHub {
46     repo = "shairport-sync";
47     owner = "mikebrady";
48     rev = "refs/tags/${version}";
49     hash = "sha256:1y8dh1gdffq38hgy6x1228l51l6p56iaiqlflw7w1dcbgw15llcd";
50   };
52   nativeBuildInputs = [
53     autoreconfHook
54     pkg-config
55     # For glib we want the `dev` output for the same library we are
56     # also linking against, since pkgsHostTarget.glib.dev exposes
57     # some extra tools that are built for build->host execution.
58     # To achieve this, we coerce the output to a string to prevent
59     # mkDerivation's splicing logic from kicking in.
60     "${glib.dev}"
61   ] ++ optional enableAirplay2 [
62     unixtools.xxd
63   ];
65   buildInputs = [
66     openssl
67     avahi
68     popt
69     libconfig
70   ]
71   ++ optional enableLibdaemon libdaemon
72   ++ optional enableAlsa alsa-lib
73   ++ optional enablePulse libpulseaudio
74   ++ optional enablePipewire pipewire
75   ++ optional enableJack libjack2
76   ++ optional enableSoxr soxr
77   ++ optionals enableAirplay2 [
78     libplist
79     libsodium
80     libgcrypt
81     libuuid
82     ffmpeg
83   ]
84   ++ optional stdenv.isLinux glib;
86   postPatch = ''
87     sed -i -e 's/G_BUS_TYPE_SYSTEM/G_BUS_TYPE_SESSION/g' dbus-service.c
88     sed -i -e 's/G_BUS_TYPE_SYSTEM/G_BUS_TYPE_SESSION/g' mpris-service.c
89   '';
91   enableParallelBuilding = true;
93   configureFlags = [
94     "--without-configfiles"
95     "--sysconfdir=/etc"
96     "--with-ssl=openssl"
97     "--with-stdout"
98     "--with-avahi"
99   ]
100   ++ optional enablePulse "--with-pa"
101   ++ optional enablePipewire "--with-pw"
102   ++ optional enableAlsa "--with-alsa"
103   ++ optional enableJack "--with-jack"
104   ++ optional enableStdout "--with-stdout"
105   ++ optional enablePipe "--with-pipe"
106   ++ optional enableSoxr "--with-soxr"
107   ++ optional enableDbus "--with-dbus-interface"
108   ++ optional enableMetadata "--with-metadata"
109   ++ optional enableMpris "--with-mpris-interface"
110   ++ optional enableLibdaemon "--with-libdaemon"
111   ++ optional enableAirplay2 "--with-airplay-2";
113   strictDeps = true;
115   meta = {
116     homepage = "https://github.com/mikebrady/shairport-sync";
117     description = "Airtunes server and emulator with multi-room capabilities";
118     license = lib.licenses.mit;
119     mainProgram = "shairport-sync";
120     maintainers = with lib.maintainers; [ lnl7 jordanisaacs ];
121     platforms = lib.platforms.unix;
122   };