128 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			128 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { lib
 | |
| , stdenv
 | |
| , fetchFromGitHub
 | |
| , autoreconfHook
 | |
| , pkg-config
 | |
| , openssl
 | |
| , avahi
 | |
| , alsa-lib
 | |
| , libplist
 | |
| , glib
 | |
| , libdaemon
 | |
| , libsodium
 | |
| , libgcrypt
 | |
| , ffmpeg
 | |
| , libuuid
 | |
| , unixtools
 | |
| , popt
 | |
| , libconfig
 | |
| , libpulseaudio
 | |
| , libjack2
 | |
| , pipewire
 | |
| , soxr
 | |
| , enableAirplay2 ? false
 | |
| , enableStdout ? true
 | |
| , enableAlsa ? true
 | |
| , enablePulse ? true
 | |
| , enablePipe ? true
 | |
| , enablePipewire ? true
 | |
| , enableJack ? true
 | |
| , enableMetadata ? false
 | |
| , enableMpris ? stdenv.isLinux
 | |
| , enableDbus ? stdenv.isLinux
 | |
| , enableSoxr ? true
 | |
| , enableLibdaemon ? false
 | |
| }:
 | |
| 
 | |
| let
 | |
|   inherit (lib) optional optionals;
 | |
| in
 | |
| 
 | |
| stdenv.mkDerivation rec {
 | |
|   pname = "shairport-sync";
 | |
|   version = "4.3.2";
 | |
| 
 | |
|   src = fetchFromGitHub {
 | |
|     repo = "shairport-sync";
 | |
|     owner = "mikebrady";
 | |
|     rev = "refs/tags/${version}";
 | |
|     hash = "sha256-M7bJO8KVxP2H27aB0qJcsaN9uHADWeOYPdNo8Xfg9gc=";
 | |
|   };
 | |
| 
 | |
|   nativeBuildInputs = [
 | |
|     autoreconfHook
 | |
|     pkg-config
 | |
|     # For glib we want the `dev` output for the same library we are
 | |
|     # also linking against, since pkgsHostTarget.glib.dev exposes
 | |
|     # some extra tools that are built for build->host execution.
 | |
|     # To achieve this, we coerce the output to a string to prevent
 | |
|     # mkDerivation's splicing logic from kicking in.
 | |
|     "${glib.dev}"
 | |
|   ] ++ optional enableAirplay2 [
 | |
|     unixtools.xxd
 | |
|   ];
 | |
| 
 | |
|   makeFlags = [
 | |
|     # Workaround for https://github.com/mikebrady/shairport-sync/issues/1705
 | |
|     "AR=${stdenv.cc.bintools.targetPrefix}ar"
 | |
|   ];
 | |
| 
 | |
|   buildInputs = [
 | |
|     openssl
 | |
|     avahi
 | |
|     popt
 | |
|     libconfig
 | |
|   ]
 | |
|   ++ optional enableLibdaemon libdaemon
 | |
|   ++ optional enableAlsa alsa-lib
 | |
|   ++ optional enablePulse libpulseaudio
 | |
|   ++ optional enablePipewire pipewire
 | |
|   ++ optional enableJack libjack2
 | |
|   ++ optional enableSoxr soxr
 | |
|   ++ optionals enableAirplay2 [
 | |
|     libplist
 | |
|     libsodium
 | |
|     libgcrypt
 | |
|     libuuid
 | |
|     ffmpeg
 | |
|   ]
 | |
|   ++ optional stdenv.isLinux glib;
 | |
| 
 | |
|   postPatch = ''
 | |
|     sed -i -e 's/G_BUS_TYPE_SYSTEM/G_BUS_TYPE_SESSION/g' dbus-service.c
 | |
|     sed -i -e 's/G_BUS_TYPE_SYSTEM/G_BUS_TYPE_SESSION/g' mpris-service.c
 | |
|   '';
 | |
| 
 | |
|   enableParallelBuilding = true;
 | |
| 
 | |
|   configureFlags = [
 | |
|     "--without-configfiles"
 | |
|     "--sysconfdir=/etc"
 | |
|     "--with-ssl=openssl"
 | |
|     "--with-stdout"
 | |
|     "--with-avahi"
 | |
|   ]
 | |
|   ++ optional enablePulse "--with-pa"
 | |
|   ++ optional enablePipewire "--with-pw"
 | |
|   ++ optional enableAlsa "--with-alsa"
 | |
|   ++ optional enableJack "--with-jack"
 | |
|   ++ optional enableStdout "--with-stdout"
 | |
|   ++ optional enablePipe "--with-pipe"
 | |
|   ++ optional enableSoxr "--with-soxr"
 | |
|   ++ optional enableDbus "--with-dbus-interface"
 | |
|   ++ optional enableMetadata "--with-metadata"
 | |
|   ++ optional enableMpris "--with-mpris-interface"
 | |
|   ++ optional enableLibdaemon "--with-libdaemon"
 | |
|   ++ optional enableAirplay2 "--with-airplay-2";
 | |
| 
 | |
|   strictDeps = true;
 | |
| 
 | |
|   meta = with lib; {
 | |
|     homepage = "https://github.com/mikebrady/shairport-sync";
 | |
|     description = "Airtunes server and emulator with multi-room capabilities";
 | |
|     license = licenses.mit;
 | |
|     maintainers = with maintainers; [ lnl7 jordanisaacs ];
 | |
|     platforms = platforms.unix;
 | |
|   };
 | |
| }
 | 
