nixos-config/packages/paulxstretch.nix

108 lines
2.1 KiB
Nix
Raw Permalink Normal View History

{ lib
, stdenv
, fetchFromGitHub
, cmake
, pkg-config
, alsa-lib
, freetype
, webkitgtk
, curl
, fftwFloat
, jack2
, xorg
, pcre2
, pcre
, libuuid
, libselinux
, libsepol
, libthai
, libdatrie
, libxkbcommon
, libepoxy
, libsysprof-capture
, sqlite
, libpsl
}:
let
buildType = "Release";
in
stdenv.mkDerivation (finalAttrs: {
pname = "paulxstretch";
version = "1.6.0";
src = fetchFromGitHub {
owner = "essej";
repo = finalAttrs.pname;
rev = "v${finalAttrs.version}";
sha256 = "sha256-Oen9W7frt7l1m9YVJCFSIDKXdmj8tWrYx68+V2Mozt0=";
fetchSubmodules = true;
};
nativeBuildInputs = [ cmake pkg-config ];
buildInputs = [
freetype
alsa-lib
webkitgtk
curl
fftwFloat
jack2
xorg.libX11
xorg.libXext
xorg.libXinerama
xorg.xrandr
xorg.libXcursor
xorg.libXfixes
xorg.libXrender
xorg.libXScrnSaver
];
# JUCE dlopens these, make sure they are in rpath
# Otherwise, segfault will happen
NIX_LDFLAGS = (toString [
"-lX11"
"-lXext"
"-lXcursor"
"-lXinerama"
"-lXrandr"
"-lXfixes"
"-lXrender"
"-lXss"
]);
# Needed for LTO to work, currently unsure as to why
cmakeFlags = [
"-DCMAKE_AR=${stdenv.cc.cc}/bin/gcc-ar"
"-DCMAKE_RANLIB=${stdenv.cc.cc}/bin/gcc-ranlib"
"-DCMAKE_NM=${stdenv.cc.cc}/bin/gcc-nm"
];
cmakeBuildType = buildType;
installPhase = let
vst3path = "${placeholder "out"}/lib/vst3";
binpath = "${placeholder "out"}/bin";
clappath = "${placeholder "out"}/lib/clap";
in
''
runHook preInstall
mkdir -p ${vst3path}
mkdir -p ${binpath}
mkdir -p ${clappath}
cp -R PaulXStretch_artefacts/${buildType}/VST3/* ${vst3path}
cp -R PaulXStretch_artefacts/${buildType}/Standalone/* ${binpath}
cp -R PaulXStretch_artefacts/${buildType}/CLAP/* ${clappath}
runHook postInstall
'';
meta = with lib; {
description = "Extreme timestretch plugin";
homepage = "https://sonosaurus.com/paulxstretch/";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = with maintainers; [ polygon ];
};
})