Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 178 lines 3.9 kB view raw
1{ 2 lib, 3 stdenv, 4 makeWrapper, 5 fetchFromGitHub, 6 fetchpatch, 7 which, 8 pkg-config, 9 libjpeg, 10 ocamlPackages, 11 awscli2, 12 bubblewrap, 13 curl, 14 ffmpeg, 15 yt-dlp, 16 runtimePackages ? [ 17 awscli2 18 bubblewrap 19 curl 20 ffmpeg 21 yt-dlp 22 ], 23}: 24 25let 26 pname = "liquidsoap"; 27 version = "2.3.0"; 28in 29stdenv.mkDerivation { 30 inherit pname version; 31 32 src = fetchFromGitHub { 33 owner = "savonet"; 34 repo = "liquidsoap"; 35 rev = "refs/tags/v${version}"; 36 hash = "sha256-wNOENkIQw8LWfceI24aa8Ja3ZkePgTIGdIpGgqs/3Ss="; 37 }; 38 39 patches = [ 40 # Compatibility with saturn_lockfree 0.5.0 41 (fetchpatch { 42 url = "https://github.com/savonet/liquidsoap/commit/3d6d2d9cd1c7750f2e97449516235a692b28bf56.patch"; 43 includes = [ "src/*" ]; 44 hash = "sha256-pmC3gwmkv+Hat61aulNkTKS4xMz+4D94OCMtzhzNfT4="; 45 }) 46 ]; 47 48 postPatch = '' 49 substituteInPlace src/lang/dune \ 50 --replace-warn "(run git rev-parse --short HEAD)" "(run echo -n nixpkgs)" 51 # Compatibility with camlimages 5.0.5 52 substituteInPlace src/core/dune \ 53 --replace-warn camlimages.all_formats camlimages.core 54 ''; 55 56 dontConfigure = true; 57 58 buildPhase = '' 59 runHook preBuild 60 61 dune build 62 63 runHook postBuild 64 ''; 65 66 installPhase = '' 67 runHook preInstall 68 69 dune install --prefix "$out" 70 71 runHook postInstall 72 ''; 73 74 fixupPhase = '' 75 runHook preFixup 76 77 wrapProgram $out/bin/liquidsoap \ 78 --set LIQ_LADSPA_PATH /run/current-system/sw/lib/ladspa \ 79 --prefix PATH : ${lib.makeBinPath runtimePackages} 80 81 runHook postFixup 82 ''; 83 84 strictDeps = true; 85 86 nativeBuildInputs = [ 87 makeWrapper 88 pkg-config 89 which 90 ocamlPackages.ocaml 91 ocamlPackages.dune_3 92 ocamlPackages.findlib 93 ocamlPackages.menhir 94 ]; 95 96 buildInputs = [ 97 libjpeg 98 99 # Mandatory dependencies 100 ocamlPackages.dtools 101 ocamlPackages.duppy 102 ocamlPackages.mm 103 ocamlPackages.ocurl 104 ocamlPackages.re 105 ocamlPackages.cry 106 ocamlPackages.camomile 107 ocamlPackages.uri 108 ocamlPackages.fileutils 109 ocamlPackages.magic-mime 110 ocamlPackages.menhir # liquidsoap-lang 111 ocamlPackages.menhirLib 112 ocamlPackages.mem_usage 113 ocamlPackages.metadata 114 ocamlPackages.dune-build-info 115 ocamlPackages.re 116 ocamlPackages.saturn_lockfree # liquidsoap-lang 117 ocamlPackages.sedlex # liquidsoap-lang 118 ocamlPackages.ppx_hash # liquidsoap-lang 119 ocamlPackages.ppx_string 120 121 # Recommended dependencies 122 ocamlPackages.ffmpeg 123 124 # Optional dependencies 125 ocamlPackages.alsa 126 ocamlPackages.ao 127 ocamlPackages.bjack 128 ocamlPackages.camlimages 129 ocamlPackages.dssi 130 ocamlPackages.faad 131 ocamlPackages.fdkaac 132 ocamlPackages.flac 133 ocamlPackages.frei0r 134 ocamlPackages.gd 135 ocamlPackages.graphics 136 # ocamlPackages.gstreamer # Broken but advertised feature 137 ocamlPackages.imagelib 138 ocamlPackages.inotify 139 ocamlPackages.ladspa 140 ocamlPackages.lame 141 ocamlPackages.lastfm 142 ocamlPackages.lilv 143 ocamlPackages.lo 144 ocamlPackages.mad 145 ocamlPackages.ogg 146 ocamlPackages.opus 147 ocamlPackages.portaudio 148 ocamlPackages.posix-time2 149 ocamlPackages.pulseaudio 150 ocamlPackages.samplerate 151 ocamlPackages.shine 152 ocamlPackages.soundtouch 153 ocamlPackages.speex 154 ocamlPackages.srt 155 ocamlPackages.ssl 156 ocamlPackages.taglib 157 ocamlPackages.theora 158 ocamlPackages.tsdl 159 ocamlPackages.tsdl-image 160 ocamlPackages.tsdl-ttf 161 ocamlPackages.vorbis 162 ocamlPackages.xmlplaylist 163 ocamlPackages.yaml 164 ]; 165 166 meta = { 167 description = "Swiss-army knife for multimedia streaming"; 168 mainProgram = "liquidsoap"; 169 homepage = "https://www.liquidsoap.info/"; 170 changelog = "https://raw.githubusercontent.com/savonet/liquidsoap/main/CHANGES.md"; 171 maintainers = with lib.maintainers; [ 172 dandellion 173 ehmry 174 ]; 175 license = lib.licenses.gpl2Plus; 176 platforms = ocamlPackages.ocaml.meta.platforms or [ ]; 177 }; 178}