96 lines
2.8 KiB
Nix
96 lines
2.8 KiB
Nix
{ lib
|
|
, stdenv
|
|
, fetchzip
|
|
, alsa-lib
|
|
, autoPatchelfHook
|
|
, libglvnd
|
|
, libjack2
|
|
, libX11
|
|
, libXi
|
|
, makeWrapper
|
|
, SDL2
|
|
}:
|
|
|
|
let
|
|
platforms = {
|
|
"x86_64-linux" = "linux_x86_64";
|
|
"i686-linux" = "linux_x86";
|
|
"aarch64-linux" = "linux_arm64";
|
|
"armv7l-linux" = "arm_armhf_raspberry_pi";
|
|
"x86_64-darwin" = "macos";
|
|
"aarch64-darwin" = "macos";
|
|
};
|
|
bindir = platforms."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
|
in
|
|
stdenv.mkDerivation (finalAttrs: {
|
|
pname = "sunvox";
|
|
version = "2.1.1c";
|
|
|
|
src = fetchzip {
|
|
urls = [
|
|
"https://www.warmplace.ru/soft/sunvox/sunvox-${finalAttrs.version}.zip"
|
|
# Upstream removes downloads of older versions, please save bumped versions to archive.org
|
|
"https://web.archive.org/web/20231204012052/https://www.warmplace.ru/soft/sunvox/sunvox-2.1.1c.zip"
|
|
];
|
|
hash = "sha256-vJ76ELjqP4wo0tCJJd3A9RarpNo8FJaiyZhj+Q7nEGs=";
|
|
};
|
|
|
|
nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [
|
|
autoPatchelfHook
|
|
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
|
|
makeWrapper
|
|
];
|
|
|
|
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
|
|
alsa-lib
|
|
libglvnd
|
|
libX11
|
|
libXi
|
|
SDL2
|
|
];
|
|
|
|
runtimeDependencies = lib.optionals stdenv.hostPlatform.isLinux [
|
|
libjack2
|
|
];
|
|
|
|
dontConfigure = true;
|
|
dontBuild = true;
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
# Delete platform-specific data for all the platforms we're not building for
|
|
find sunvox -mindepth 1 -maxdepth 1 -type d -not -name "${bindir}" -exec rm -r {} \;
|
|
|
|
mkdir -p $out/{bin,share/sunvox}
|
|
mv * $out/share/sunvox/
|
|
|
|
'' + lib.optionalString stdenv.hostPlatform.isLinux ''
|
|
for binary in $(find $out/share/sunvox/sunvox/${bindir}/ -type f -executable); do
|
|
mv $binary $out/bin/$(basename $binary)
|
|
done
|
|
|
|
# Cleanup, make sure we didn't miss anything
|
|
find $out/share/sunvox/sunvox -type f -name readme.txt -delete
|
|
rmdir $out/share/sunvox/sunvox/${bindir} $out/share/sunvox/sunvox
|
|
'' + lib.optionalString stdenv.hostPlatform.isDarwin ''
|
|
mkdir $out/Applications
|
|
ln -s $out/share/sunvox/sunvox/${bindir}/SunVox.app $out/Applications/
|
|
ln -s $out/share/sunvox/sunvox/${bindir}/reset_sunvox $out/bin/
|
|
|
|
# Need to use a wrapper, binary checks for files relative to the path it was called via
|
|
makeWrapper $out/Applications/SunVox.app/Contents/MacOS/SunVox $out/bin/sunvox
|
|
'' + ''
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = with lib; {
|
|
description = "Small, fast and powerful modular synthesizer with pattern-based sequencer";
|
|
license = licenses.unfreeRedistributable;
|
|
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
|
homepage = "https://www.warmplace.ru/soft/sunvox/";
|
|
maintainers = with maintainers; [ puffnfresh OPNA2608 ];
|
|
platforms = lib.attrNames platforms;
|
|
};
|
|
})
|