biglybt: 3.5.0.0 -> 3.6.0.0
[NixPkgs.git] / pkgs / applications / audio / renoise / default.nix
bloba56d43876fb04ff399558c4015d1c59ea171e8ce
1 { lib
2 , stdenv
3 , alsa-lib
4 , fetchurl
5 , libjack2
6 , libX11
7 , libXcursor
8 , libXext
9 , libXinerama
10 , libXrandr
11 , libXtst
12 , mpg123
13 , pipewire
14 , releasePath ? null
17 # To use the full release version:
18 # 1) Sign into https://backstage.renoise.com and download the release version to some stable location.
19 # 2) Override the releasePath attribute to point to the location of the newly downloaded bundle.
20 # Note: Renoise creates an individual build for each license which screws somewhat with the
21 # use of functions like requireFile as the hash will be different for every user.
22 let
23   platforms = {
24     x86_64-linux = {
25       archSuffix = "x86_64";
26       hash = "sha256-Etz6NaeLMysSkcQGC3g+IqUy9QrONCrbkyej63uLflo=";
27     };
28     aarch64-linux = {
29       archSuffix = "arm64";
30       hash = "sha256-PVpgxhJU8RY6QepydqImQnisWBjbrsuW4j49Xot3C6Y=";
31     };
32   };
34 in stdenv.mkDerivation rec {
35   pname = "renoise";
36   version = "3.4.3";
38   src = if releasePath != null then
39     releasePath
40   else
41     let
42       platform = platforms.${stdenv.system} or (throw "unsupported system ${stdenv.hostPlatform.system}");
43       urlVersion = lib.replaceStrings [ "." ] [ "_" ] version;
44     in fetchurl {
45       url =
46         "https://files.renoise.com/demo/Renoise_${urlVersion}_Demo_Linux_${platform.archSuffix}.tar.gz";
47       hash = platform.hash;
48     };
50   buildInputs = [
51     alsa-lib
52     libjack2
53     libX11
54     libXcursor
55     libXext
56     libXinerama
57     libXrandr
58     libXtst
59     pipewire
60   ];
62   installPhase = ''
63     cp -r Resources $out
65     mkdir -p $out/lib/
67     cp renoise $out/renoise
69     for path in ${toString buildInputs}; do
70       ln -s $path/lib/*.so* $out/lib/
71     done
73     ln -s ${stdenv.cc.cc.lib}/lib/libstdc++.so.6 $out/lib/
75     mkdir $out/bin
76     ln -s $out/renoise $out/bin/renoise
78     # Desktop item
79     mkdir -p $out/share/applications
80     cp -r Installer/renoise.desktop $out/share/applications/renoise.desktop
82     # Desktop item icons
83     mkdir -p $out/share/icons/hicolor/{48x48,64x64,128x128}/apps
84     cp Installer/renoise-48.png $out/share/icons/hicolor/48x48/apps/renoise.png
85     cp Installer/renoise-64.png $out/share/icons/hicolor/64x64/apps/renoise.png
86     cp Installer/renoise-128.png $out/share/icons/hicolor/128x128/apps/renoise.png
87   '';
89   postFixup = ''
90     patchelf \
91       --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
92       --set-rpath ${mpg123}/lib:$out/lib \
93       $out/renoise
95     for path in $out/AudioPluginServer*; do
96       patchelf \
97         --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
98         --set-rpath $out/lib \
99         $path
100     done
102     substituteInPlace $out/share/applications/renoise.desktop \
103       --replace Exec=renoise Exec=$out/bin/renoise
104   '';
106   meta = {
107     description = "Modern tracker-based DAW";
108     homepage = "https://www.renoise.com/";
109     sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
110     license = lib.licenses.unfree;
111     maintainers = with lib.maintainers; [ uakci ];
112     platforms = lib.attrNames platforms;
113     mainProgram = "renoise";
114   };