lol
1{ config
2, lib
3, stdenv
4, fetchurl
5, zlib
6, pkg-config
7, mpg123
8, libogg
9, libvorbis
10, portaudio
11, libsndfile
12, flac
13, usePulseAudio ? config.pulseaudio or stdenv.isLinux
14, libpulseaudio
15}:
16
17stdenv.mkDerivation rec {
18 pname = "libopenmpt";
19 version = "0.7.6";
20
21 outputs = [ "out" "dev" "bin" ];
22
23 src = fetchurl {
24 url = "https://lib.openmpt.org/files/libopenmpt/src/libopenmpt-${version}+release.autotools.tar.gz";
25 hash = "sha256-Fi1yowa7LhFMJPolJn0NCgrBbzn9laXA38daZm7l5PU=";
26 };
27
28 enableParallelBuilding = true;
29
30 nativeBuildInputs = [
31 pkg-config
32 ];
33
34 buildInputs = [
35 zlib
36 mpg123
37 libogg
38 libvorbis
39 portaudio
40 libsndfile
41 flac
42 ] ++ lib.optionals usePulseAudio [
43 libpulseaudio
44 ];
45
46 configureFlags = [
47 (lib.strings.withFeature usePulseAudio "pulseaudio")
48 ];
49
50 doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
51
52 postFixup = ''
53 moveToOutput share/doc $dev
54 '';
55
56 passthru.updateScript = ./update.sh;
57
58 meta = with lib; {
59 description = "Cross-platform C++ and C library to decode tracked music files into a raw PCM audio stream";
60 mainProgram = "openmpt123";
61 longDescription = ''
62 libopenmpt is a cross-platform C++ and C library to decode tracked music files (modules) into a raw PCM audio stream.
63 openmpt123 is a cross-platform command-line or terminal based module file player.
64 libopenmpt is based on the player code of the OpenMPT project.
65 '';
66 homepage = "https://lib.openmpt.org/libopenmpt/";
67 license = licenses.bsd3;
68 maintainers = with maintainers; [ OPNA2608 ];
69 platforms = platforms.unix;
70 };
71}