summaryrefslogtreecommitdiffstats
path: root/pkgs/applications/audio/bespokesynth
diff options
context:
space:
mode:
authorTobias Bora <tobias.bora@gmail.com>2022-01-18 19:30:50 +0100
committerGitHub <noreply@github.com>2022-01-18 19:30:50 +0100
commitd3a146c2ec9c1dae66d11d1cd45052e5a9fde9c5 (patch)
treed720316f224de05c4f7982bff58f3fd79eeab726 /pkgs/applications/audio/bespokesynth
parent222f62ed88f67a1c9a7854b7e95bd9a5fe67b7ca (diff)
bespokesynth: 1.0 -> 1.1.0. Fixing issues with file loading (#144708)
Co-authored-by: OPNA2608 <christoph.neidahl@gmail.com>
Diffstat (limited to 'pkgs/applications/audio/bespokesynth')
-rw-r--r--pkgs/applications/audio/bespokesynth/default.nix198
1 files changed, 113 insertions, 85 deletions
diff --git a/pkgs/applications/audio/bespokesynth/default.nix b/pkgs/applications/audio/bespokesynth/default.nix
index e8d2ada38783..a5ef585969e6 100644
--- a/pkgs/applications/audio/bespokesynth/default.nix
+++ b/pkgs/applications/audio/bespokesynth/default.nix
@@ -1,40 +1,46 @@
-{ lib, stdenv, fetchFromGitHub, pkg-config, fetchzip
-, libjack2, alsa-lib, freetype, libX11, libXrandr, libXinerama, libXext, libXcursor
-, libGL, python3, ncurses, libusb1
-, gtk3, webkitgtk, curl, xvfb-run, makeWrapper
- # "Debug", or "Release"
-, buildType ? "Release"
+{ lib
+, stdenv
+, fetchFromGitHub
+, fetchzip
+, cmake
+, pkg-config
+, ninja
+, makeWrapper
+, libjack2
+, alsa-lib
+, alsa-tools
+, freetype
+, libusb1
+, libX11
+, libXrandr
+, libXinerama
+, libXext
+, libXcursor
+, libXScrnSaver
+, libGL
+, libxcb
+, xcbutil
+, libxkbcommon
+, xcbutilkeysyms
+, xcb-util-cursor
+, gtk3
+, webkitgtk
+, python3
+, curl
+, pcre
+, mount
+, gnome
+, Cocoa
+, WebKit
+, CoreServices
+, CoreAudioKit
+ # It is not allowed to distribute binaries with the VST2 SDK plugin without a license
+ # (the author of Bespoke has such a licence but not Nix). VST3 should work out of the box.
+ # Read more in https://github.com/NixOS/nixpkgs/issues/145607
+, enableVST2 ? false
}:
let
- projucer = stdenv.mkDerivation rec {
- pname = "projucer";
- version = "5.4.7";
-
- src = fetchFromGitHub {
- owner = "juce-framework";
- repo = "JUCE";
- rev = version;
- sha256= "0qpiqfwwpcghk7ij6w4vy9ywr3ryg7ppg77bmd7783kxg6zbhj8h";
- };
-
- nativeBuildInputs = [ pkg-config ];
- buildInputs = [
- freetype libX11 libXrandr libXinerama libXext gtk3 webkitgtk
- libjack2 curl
- ];
- preBuild = ''
- cd extras/Projucer/Builds/LinuxMakefile
- '';
- makeFlags = [ "CONFIG=${buildType}" ];
- enableParallelBuilding = true;
-
- installPhase = ''
- mkdir -p $out/bin
- cp -a build/Projucer $out/bin/Projucer
- '';
- };
-
# equal to vst-sdk in ../oxefmsynth/default.nix
vst-sdk = stdenv.mkDerivation rec {
name = "vstsdk3610_11_06_2018_build_37";
@@ -50,70 +56,92 @@ let
in
stdenv.mkDerivation rec {
pname = "bespokesynth";
- version = "1.0.0";
+ version = "1.1.0";
src = fetchFromGitHub {
- owner = "awwbees";
+ owner = "BespokeSynth";
repo = pname;
rev = "v${version}";
- sha256 = "04b2m40jszphslkd4850jcb8qwls392lwy3lc6vlj01h4izvapqk";
+ sha256 = "sha256-PN0Q6/gI1PeMaF/8EZFGJdLR8JVHQZfWunAhOIQxkHw=";
+ fetchSubmodules = true;
};
- configurePhase = ''
- runHook preConfigure
-
- export HOME=$(mktemp -d)
- xvfb-run sh -e <<EOF
- ${projucer}/bin/Projucer --set-global-search-path linux defaultJuceModulePath ${projucer.src}/modules
- ${projucer}/bin/Projucer --resave BespokeSynth.jucer
- EOF
-
- runHook postConfigure
- '';
- CFLAGS = "-I${vst-sdk}/VST2_SDK";
-
- nativeBuildInputs = [ xvfb-run pkg-config python3 makeWrapper ];
-
- buildInputs = [
- libX11 libXrandr libXinerama libXext libXcursor freetype libGL
- ncurses libusb1
- alsa-lib libjack2
+ cmakeBuildType = "Release";
+
+ cmakeFlags = lib.optionals enableVST2 [ "-DBESPOKE_VST2_SDK_LOCATION=${vst-sdk}/VST2_SDK" ];
+
+ nativeBuildInputs = [ python3 makeWrapper cmake pkg-config ninja ];
+
+ buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
+ # List obtained in https://github.com/BespokeSynth/BespokeSynth/blob/main/azure-pipelines.yml
+ libX11
+ libXrandr
+ libXinerama
+ libXext
+ libXcursor
+ libXScrnSaver
+ curl
+ gtk3
+ webkitgtk
+ freetype
+ libGL
+ libusb1
+ alsa-lib
+ libjack2
+ gnome.zenity
+ alsa-tools
+ libxcb
+ xcbutil
+ libxkbcommon
+ xcbutilkeysyms
+ xcb-util-cursor
+ pcre
+ mount
+ ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
+ Cocoa
+ WebKit
+ CoreServices
+ CoreAudioKit
];
- preBuild = ''
- cd Builds/LinuxMakefile
- '';
- makeFlags = [ "CONFIG=${buildType}" ];
- enableParallelBuilding = true;
-
- installPhase = ''
- runHook preInstall
-
- mkdir -p $out/bin $out/share/bespokesynth $out/share/applications $out/share/icons/hicolor/512x512/apps
- cp build/BespokeSynth $out/bin/
- cp -ar ../MacOSX/build/Release/resource $out/share/bespokesynth/
- wrapProgram $out/bin/BespokeSynth \
- --run "cd $out/share/bespokesynth"
-
- mkdir -p $out/share/applications/ $out/share/icons/hicolor/512x512/apps/
- cp ../../bespoke_icon.png $out/share/icons/hicolor/512x512/apps/
- substitute ../../BespokeSynth.desktop $out/share/applications/BespokseSynth.desktop \
- --replace "/usr/bin/" ""
-
- runHook postInstall
- '';
+ NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isDarwin (toString [
+ # Fails to find fp.h on its own
+ "-isystem ${CoreServices}/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks/CarbonCore.framework/Versions/Current/Headers/"
+ ]);
+
+ postInstall =
+ if stdenv.hostPlatform.isDarwin then ''
+ mkdir -p $out/{Applications,bin}
+ mv Source/BespokeSynth_artefacts/${cmakeBuildType}/BespokeSynth.app $out/Applications/
+ # Symlinking confuses the resource finding about the actual location of the binary
+ # Resources are looked up relative to the executed file's location
+ makeWrapper $out/{Applications/BespokeSynth.app/Contents/MacOS,bin}/BespokeSynth
+ '' else ''
+ # Ensure zenity is available, or it won't be able to open new files.
+ # Ensure the python used for compilation is the same as the python used at run-time.
+ # jedi is also required for auto-completion.
+ # These X11 libs get dlopen'd, they cause visual bugs when unavailable.
+ wrapProgram $out/bin/BespokeSynth \
+ --prefix PATH : '${lib.makeBinPath [
+ gnome.zenity
+ (python3.withPackages (ps: with ps; [ jedi ]))
+ ]}' \
+ --prefix LD_LIBRARY_PATH : '${lib.makeLibraryPath [
+ libXrandr
+ libXinerama
+ libXcursor
+ libXScrnSaver
+ ]}'
+ '';
meta = with lib; {
- description = "Software modular synth with controllers support, scripting and VST";
+ description =
+ "Software modular synth with controllers support, scripting and VST";
homepage = "https://github.com/awwbees/BespokeSynth";
license = with licenses; [
gpl3Plus
-
- # This package is unfree and not distributable due to the license of VST2.
- # see #145607
- unfree
- ];
- maintainers = with maintainers; [ astro ];
+ ] ++ lib.optional enableVST2 unfree;
+ maintainers = with maintainers; [ astro tobiasBora OPNA2608 ];
platforms = platforms.all;
};
}