172 lines
3.6 KiB
Nix
172 lines
3.6 KiB
Nix
{
|
|
stdenv,
|
|
fetchFromGitHub,
|
|
lib,
|
|
cmake,
|
|
pkg-config,
|
|
alsa-lib,
|
|
copyDesktopItems,
|
|
makeDesktopItem,
|
|
xorg,
|
|
freetype,
|
|
expat,
|
|
libGL,
|
|
libjack2,
|
|
curl,
|
|
webkitgtk_4_0,
|
|
libsysprof-capture,
|
|
pcre2,
|
|
util-linux,
|
|
libselinux,
|
|
libsepol,
|
|
libthai,
|
|
libxkbcommon,
|
|
libdatrie,
|
|
libepoxy,
|
|
libsoup_2_4,
|
|
lerc,
|
|
sqlite,
|
|
ninja,
|
|
# Disable VST building by default, since NixOS doesn't have a VST license
|
|
enableVST2 ? false,
|
|
}:
|
|
stdenv.mkDerivation {
|
|
pname = "socalabs-sid";
|
|
version = "1.1.0";
|
|
|
|
src =
|
|
(fetchFromGitHub {
|
|
owner = "FigBug";
|
|
repo = "SID";
|
|
rev = "bb826fdea39da0804c53d81d35bea29aeff4436d";
|
|
hash = "sha256-6IStysItOS7EltTCqdyo9vrsnSA1YYoN4y8Bjv1fhNk=";
|
|
fetchSubmodules = true;
|
|
}).overrideAttrs
|
|
(_: {
|
|
GIT_CONFIG_COUNT = 1;
|
|
GIT_CONFIG_KEY_0 = "url.https://github.com/.insteadOf";
|
|
GIT_CONFIG_VALUE_0 = "git@github.com:";
|
|
});
|
|
|
|
desktopItems = [
|
|
(makeDesktopItem {
|
|
type = "Application";
|
|
name = "socalabs-sid";
|
|
desktopName = "Socalabs SID";
|
|
comment = "Socalabs Commodore 64 SID Emulation Plugin (Standalone)";
|
|
icon = "SID";
|
|
exec = "SID";
|
|
categories = [
|
|
"Audio"
|
|
"AudioVideo"
|
|
];
|
|
})
|
|
];
|
|
|
|
nativeBuildInputs = [
|
|
cmake
|
|
pkg-config
|
|
copyDesktopItems
|
|
ninja
|
|
];
|
|
|
|
buildInputs = [
|
|
alsa-lib
|
|
xorg.libX11
|
|
xorg.libXcomposite
|
|
xorg.libXcursor
|
|
xorg.libXinerama
|
|
xorg.libXrandr
|
|
xorg.libXtst
|
|
xorg.libXdmcp
|
|
xorg.xvfb
|
|
libGL
|
|
libjack2
|
|
libsysprof-capture
|
|
libselinux
|
|
libsepol
|
|
libthai
|
|
libxkbcommon
|
|
libdatrie
|
|
libepoxy
|
|
libsoup_2_4
|
|
lerc
|
|
freetype
|
|
curl
|
|
webkitgtk_4_0
|
|
pcre2
|
|
util-linux
|
|
sqlite
|
|
expat
|
|
];
|
|
|
|
cmakeFlags = [
|
|
(lib.cmakeBool "JUCE_COPY_PLUGIN_AFTER_BUILD" false)
|
|
"--preset ninja-gcc"
|
|
];
|
|
|
|
patchPhase = ''
|
|
substituteInPlace CMakeLists.txt \
|
|
--replace-fail 'FORMATS Standalone VST VST3 AU LV2' 'FORMATS Standalone ${lib.optionalString enableVST2 "VST"} VST3 LV2'
|
|
|
|
# we need to patch JUCE itself to enable jack MIDI support
|
|
# please https://github.com/juce-framework/JUCE/issues/952
|
|
# TODO: remove when juce updates :D
|
|
substituteInPlace modules/juce/modules/juce_audio_devices/native/juce_Midi_linux.cpp \
|
|
--replace-fail "port = client.createPort (portName, forInput, false);" "port = client.createPort (portName, forInput, true);"
|
|
'';
|
|
|
|
cmakeBuildType = "Release";
|
|
|
|
strictDeps = true;
|
|
|
|
preBuild = ''
|
|
# build takes 10 years without this set
|
|
HOME=(mktemp -d)
|
|
|
|
cd ../Builds/ninja-gcc
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/lib/vst3 $out/lib/lv2 $out/bin
|
|
|
|
${lib.optionalString enableVST2 ''
|
|
mkdir -p $out/lib/vst
|
|
cp -r SID_artefacts/Release/VST/libSID.so $out/lib/vst
|
|
''}
|
|
|
|
cp -r SID_artefacts/Release/LV2/SID.lv2 $out/lib/lv2
|
|
cp -r SID_artefacts/Release/VST3/SID.vst3 $out/lib/vst3
|
|
|
|
install -Dm755 SID_artefacts/Release/Standalone/SID $out/bin
|
|
|
|
install -Dm444 $src/plugin/Resources/icon.png $out/share/pixmaps/SID.png
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
NIX_LDFLAGS = (
|
|
toString [
|
|
"-lX11"
|
|
"-lXext"
|
|
"-lXcomposite"
|
|
"-lXcursor"
|
|
"-lXinerama"
|
|
"-lXrandr"
|
|
"-lXtst"
|
|
"-lXdmcp"
|
|
]
|
|
);
|
|
|
|
meta = {
|
|
description = "Socalabs Commodore 64 SID Emulation Plugin";
|
|
homepage = "https://socalabs.com/synths/commodore-64-sid/";
|
|
mainProgram = "SID";
|
|
platforms = lib.platforms.linux;
|
|
license = [ lib.licenses.gpl3 ] ++ lib.optional enableVST2 lib.licenses.unfree;
|
|
maintainers = [ lib.maintainers.l1npengtul ];
|
|
};
|
|
}
|