base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12 (#356361)
[NixPkgs.git] / pkgs / tools / audio / liquidsoap / full.nix
bloba845f4677754802283b0861ae29182832eeab743
1 { lib, stdenv, makeWrapper, fetchFromGitHub, which, pkg-config
2 , libjpeg
3 , ocamlPackages
4 , awscli2, bubblewrap, curl, ffmpeg, yt-dlp
5 , runtimePackages ? [ awscli2 bubblewrap curl ffmpeg yt-dlp ]
6 }:
8 let
9   pname = "liquidsoap";
10   version = "2.2.5";
12 stdenv.mkDerivation {
13   inherit pname version;
15   src = fetchFromGitHub {
16     owner = "savonet";
17     repo = "liquidsoap";
18     rev = "refs/tags/v${version}";
19     hash = "sha256-o3P7oTizO2l2WkB4LormZ/Ses5jZOpgQ1r1zB1Y3Bjs=";
20   };
22   postPatch = ''
23     substituteInPlace src/lang/dune \
24       --replace-warn "(run git rev-parse --short HEAD)" "(run echo -n nixpkgs)"
25   '';
27   dontConfigure = true;
29   buildPhase = ''
30     runHook preBuild
32     dune build
34     runHook postBuild
35   '';
37   installPhase = ''
38     runHook preInstall
40     dune install --prefix "$out"
42     runHook postInstall
43   '';
45   fixupPhase = ''
46     runHook preFixup
48     wrapProgram $out/bin/liquidsoap \
49       --set LIQ_LADSPA_PATH /run/current-system/sw/lib/ladspa \
50       --prefix PATH : ${lib.makeBinPath runtimePackages}
52     runHook postFixup
53   '';
55   strictDeps = true;
57   nativeBuildInputs = [
58     makeWrapper
59     pkg-config
60     which
61     ocamlPackages.ocaml
62     ocamlPackages.dune_3
63     ocamlPackages.findlib
64     ocamlPackages.menhir
65   ];
67   buildInputs = [
68     libjpeg
70     # Mandatory dependencies
71     ocamlPackages.dtools
72     ocamlPackages.duppy
73     ocamlPackages.mm
74     ocamlPackages.ocurl
75     ocamlPackages.ocaml_pcre
76     ocamlPackages.cry
77     ocamlPackages.camomile
78     ocamlPackages.uri
79     ocamlPackages.fileutils
80     ocamlPackages.magic-mime
81     ocamlPackages.menhir # liquidsoap-lang
82     ocamlPackages.menhirLib
83     ocamlPackages.metadata
84     ocamlPackages.dune-build-info
85     ocamlPackages.re
86     ocamlPackages.sedlex # liquidsoap-lang
87     ocamlPackages.ppx_string
89     # Recommended dependencies
90     ocamlPackages.ffmpeg
92     # Optional dependencies
93     ocamlPackages.alsa
94     ocamlPackages.ao
95     ocamlPackages.bjack
96     ocamlPackages.camlimages
97     ocamlPackages.dssi
98     ocamlPackages.faad
99     ocamlPackages.fdkaac
100     ocamlPackages.flac
101     ocamlPackages.frei0r
102     ocamlPackages.gd
103     ocamlPackages.graphics
104     # ocamlPackages.gstreamer # Broken but advertised feature
105     ocamlPackages.imagelib
106     ocamlPackages.inotify
107     ocamlPackages.ladspa
108     ocamlPackages.lame
109     ocamlPackages.lastfm
110     ocamlPackages.lilv
111     ocamlPackages.lo
112     ocamlPackages.mad
113     ocamlPackages.ogg
114     ocamlPackages.opus
115     ocamlPackages.portaudio
116     ocamlPackages.posix-time2
117     ocamlPackages.pulseaudio
118     ocamlPackages.samplerate
119     ocamlPackages.shine
120     ocamlPackages.soundtouch
121     ocamlPackages.speex
122     ocamlPackages.srt
123     ocamlPackages.ssl
124     ocamlPackages.taglib
125     ocamlPackages.theora
126     ocamlPackages.tsdl
127     ocamlPackages.tsdl-image
128     ocamlPackages.tsdl-ttf
129     ocamlPackages.vorbis
130     ocamlPackages.xmlplaylist
131     ocamlPackages.yaml
132   ];
134   meta = {
135     description = "Swiss-army knife for multimedia streaming";
136     mainProgram = "liquidsoap";
137     homepage = "https://www.liquidsoap.info/";
138     changelog = "https://raw.githubusercontent.com/savonet/liquidsoap/main/CHANGES.md";
139     maintainers = with lib.maintainers; [ dandellion ehmry ];
140     license = lib.licenses.gpl2Plus;
141     platforms = ocamlPackages.ocaml.meta.platforms or [];
142   };