lol
1{ lib, stdenv, fetchurl, libX11, libXext, libXcursor, libXrandr, libjack2, alsa-lib
2, mpg123, releasePath ? null }:
3
4with lib;
5
6# To use the full release version:
7# 1) Sign into https://backstage.renoise.com and download the release version to some stable location.
8# 2) Override the releasePath attribute to point to the location of the newly downloaded bundle.
9# Note: Renoise creates an individual build for each license which screws somewhat with the
10# use of functions like requireFile as the hash will be different for every user.
11let
12 urlVersion = replaceStrings [ "." ] [ "_" ];
13in
14
15stdenv.mkDerivation rec {
16 pname = "renoise";
17 version = "3.3.2";
18
19 src =
20 if stdenv.hostPlatform.system == "x86_64-linux" then
21 if releasePath == null then
22 fetchurl {
23 urls = [
24 "https://files.renoise.com/demo/Renoise_${urlVersion version}_Demo_Linux.tar.gz"
25 "https://web.archive.org/web/https://files.renoise.com/demo/Renoise_${urlVersion version}_Demo_Linux.tar.gz"
26 ];
27 sha256 = "0d9pnrvs93d4bwbfqxwyr3lg3k6gnzmp81m95gglzwdzczxkw38k";
28 }
29 else
30 releasePath
31 else throw "Platform is not supported. Use instalation native to your platform https://www.renoise.com/";
32
33 buildInputs = [ alsa-lib libjack2 libX11 libXcursor libXext libXrandr ];
34
35 installPhase = ''
36 cp -r Resources $out
37
38 mkdir -p $out/lib/
39
40 cp renoise $out/renoise
41
42 for path in ${toString buildInputs}; do
43 ln -s $path/lib/*.so* $out/lib/
44 done
45
46 ln -s ${stdenv.cc.cc.lib}/lib/libstdc++.so.6 $out/lib/
47
48 mkdir $out/bin
49 ln -s $out/renoise $out/bin/renoise
50
51 # Desktop item
52 mkdir -p $out/share/applications
53 cp -r Installer/renoise.desktop $out/share/applications/renoise.desktop
54
55 # Desktop item icons
56 mkdir -p $out/share/icons/hicolor/{48x48,64x64,128x128}/apps
57 cp Installer/renoise-48.png $out/share/icons/hicolor/48x48/apps/renoise.png
58 cp Installer/renoise-64.png $out/share/icons/hicolor/64x64/apps/renoise.png
59 cp Installer/renoise-128.png $out/share/icons/hicolor/128x128/apps/renoise.png
60 '';
61
62 postFixup = ''
63 patchelf \
64 --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
65 --set-rpath ${mpg123}/lib:$out/lib \
66 $out/renoise
67
68 for path in $out/AudioPluginServer*; do
69 patchelf \
70 --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
71 --set-rpath $out/lib \
72 $path
73 done
74
75 substituteInPlace $out/share/applications/renoise.desktop \
76 --replace Exec=renoise Exec=$out/bin/renoise
77 '';
78
79 meta = {
80 description = "Modern tracker-based DAW";
81 homepage = "https://www.renoise.com/";
82 license = licenses.unfree;
83 maintainers = [];
84 platforms = [ "x86_64-linux" ];
85 };
86}