nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at litex 73 lines 2.0 kB view raw
1{ lib, stdenv, fetchurl 2, pkg-config, buildPackages 3, CoreAudio, alsa-lib, libjack2, ncurses 4}: 5 6stdenv.mkDerivation rec { 7 pname = "timidity"; 8 version = "2.15.0"; 9 10 src = fetchurl { 11 url = "mirror://sourceforge/timidity/TiMidity++-${version}.tar.bz2"; 12 sha256 = "1xf8n6dqzvi6nr2asags12ijbj1lwk1hgl3s27vm2szib8ww07qn"; 13 }; 14 15 patches = [ ./timidity-iA-Oj.patch ]; 16 17 nativeBuildInputs = [ pkg-config ]; 18 buildInputs = [ 19 libjack2 20 ncurses 21 ] ++ lib.optionals stdenv.isLinux [ 22 alsa-lib 23 ] ++ lib.optionals stdenv.isDarwin [ 24 CoreAudio 25 ]; 26 27 configureFlags = [ 28 "--enable-ncurses" 29 "lib_cv_va_copy=yes" 30 "lib_cv___va_copy=yes" 31 ] ++ lib.optionals stdenv.isLinux [ 32 "--enable-audio=oss,alsa,jack" 33 "--enable-alsaseq" 34 "--with-default-output=alsa" 35 "lib_cv_va_val_copy=yes" 36 ] ++ lib.optionals stdenv.isDarwin [ 37 "--enable-audio=darwin,jack" 38 "lib_cv_va_val_copy=no" 39 ]; 40 41 makeFlags = [ 42 "AR=${stdenv.cc.targetPrefix}ar" 43 ]; 44 45 instruments = fetchurl { 46 url = "http://www.csee.umbc.edu/pub/midia/instruments.tar.gz"; 47 sha256 = "0lsh9l8l5h46z0y8ybsjd4pf6c22n33jsjvapfv3rjlfnasnqw67"; 48 }; 49 50 preBuild = '' 51 # calcnewt has to be built with the host compiler. 52 ${buildPackages.stdenv.cc}/bin/cc -o timidity/calcnewt -lm timidity/calcnewt.c 53 # Remove dependencies of calcnewt so it doesn't try to remake it. 54 sed -i 's/^\(calcnewt\$(EXEEXT):\).*/\1/g' timidity/Makefile 55 ''; 56 57 # the instruments could be compressed (?) 58 postInstall = '' 59 mkdir -p $out/share/timidity/; 60 cp ${./timidity.cfg} $out/share/timidity/timidity.cfg 61 tar --strip-components=1 -xf $instruments -C $out/share/timidity/ 62 ''; 63 # This fixup step is unnecessary and fails on Darwin 64 dontRewriteSymlinks = stdenv.isDarwin; 65 66 meta = with lib; { 67 homepage = "https://sourceforge.net/projects/timidity/"; 68 license = licenses.gpl2; 69 description = "A software MIDI renderer"; 70 maintainers = [ maintainers.marcweber ]; 71 platforms = platforms.unix; 72 }; 73}