diff --git a/pkgs/by-name/zl/zlequalizer/package.nix b/pkgs/by-name/zl/zlequalizer/package.nix index 7ad6f4e59d8c..e08b5ce58bcb 100644 --- a/pkgs/by-name/zl/zlequalizer/package.nix +++ b/pkgs/by-name/zl/zlequalizer/package.nix @@ -2,6 +2,7 @@ lib, clangStdenv, fetchFromGitHub, + nix-update-script, # nativeBuildInputs cmake, @@ -26,17 +27,33 @@ libjack2, libxkbcommon, lv2, + # Highway is built static-dispatch only upstream (HWY_COMPILE_ONLY_STATIC is + # forced ON), so exactly one ISA is baked in -- there is no runtime dispatch. + # Default to the portable baseline so the cached binary runs everywhere nixpkgs + # targets. Override for a faster *local* build, e.g. + # zlequalizer.override { simdTarget = "AVX2"; } + # SSE4/AVX2 map to -march=x86-64-v2/v3 and will SIGILL on CPUs lacking that ISA, + # which is why this must not be raised for the binary cache. + simdTarget ? (if clangStdenv.hostPlatform.isAarch64 then "NEON" else "SSE2"), }: - +assert lib.assertOneOf "simdTarget" simdTarget [ + "SSE2" + "SSE4" + "AVX2" + "NEON" +]; clangStdenv.mkDerivation (finalAttrs: { pname = "zlequalizer"; - version = "1.1.1"; + version = "1.2.1"; + + __structuredAttrs = true; + strictDeps = true; src = fetchFromGitHub { owner = "ZL-Audio"; repo = "ZLEqualizer"; tag = finalAttrs.version; - hash = "sha256-H6j4e9V0Nf3kkm1ds9zSjLsHeDXU5PIHreJVRpjf/Ts="; + hash = "sha256-IFfJTd0jfTDbXqyqr34BQoflj3nyB4k/0BqeC6V2j4E="; fetchSubmodules = true; }; @@ -91,12 +108,9 @@ clangStdenv.mkDerivation (finalAttrs: { }; cmakeFlags = [ - # see: https://github.com/ZL-Audio/ZLEqualizer#clone-and-build - (lib.cmakeFeature "KFR_ARCHS" ( - if clangStdenv.hostPlatform.isAarch64 then "neon64" else "sse2;avx;avx2" - )) + (lib.cmakeFeature "ZL_HWY_STATIC_TARGET" simdTarget) (lib.cmakeBool "ZL_JUCE_COPY_PLUGIN" false) - # set the version for in the settings screen. + # set the version for the settings screen. (lib.cmakeFeature "FOOBAR_VERSION" "${finalAttrs.version}") ]; @@ -119,9 +133,13 @@ clangStdenv.mkDerivation (finalAttrs: { runHook postInstall ''; + passthru.updateScript = nix-update-script { }; + meta = { homepage = "https://zl-audio.github.io/plugins/zlequalizer2/"; + changelog = "https://github.com/ZL-Audio/ZLEqualizer/releases/tag/${finalAttrs.version}"; description = "Versatile equalizer plugin for VST3, LV2 and standalone"; + mainProgram = "ZL Equalizer 2"; license = lib.licenses.agpl3Plus; maintainers = with lib.maintainers; [ magnetophon