summaryrefslogtreecommitdiff
path: root/pkgs/by-name/fi/fire/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/fi/fire/package.nix')
-rw-r--r--pkgs/by-name/fi/fire/package.nix194
1 files changed, 122 insertions, 72 deletions
diff --git a/pkgs/by-name/fi/fire/package.nix b/pkgs/by-name/fi/fire/package.nix
index 6625ad8a9314..f76222308dbd 100644
--- a/pkgs/by-name/fi/fire/package.nix
+++ b/pkgs/by-name/fi/fire/package.nix
@@ -1,10 +1,13 @@
{
stdenv,
lib,
+ fetchurl,
fetchFromGitHub,
+ runCommand,
unstableGitUpdater,
catch2_3,
cmake,
+ fontconfig,
pkg-config,
libX11,
libXrandr,
@@ -13,36 +16,102 @@
libXcursor,
freetype,
alsa-lib,
+
+ # Only able to test this myself in Linux
+ withStandalone ? stdenv.hostPlatform.isLinux,
}:
+let
+ # Required version, base URL and expected location specified in cmake/CPM.cmake
+ cpmDownloadVersion = "0.40.2";
+ cpmSrc = fetchurl {
+ url = "https://github.com/cpm-cmake/CPM.cmake/releases/download/v${cpmDownloadVersion}/CPM.cmake";
+ hash = "sha256-yM3DLAOBZTjOInge1ylk3IZLKjSjENO3EEgSpcotg10=";
+ };
+ cpmSourceCache = runCommand "cpm-source-cache" { } ''
+ mkdir -p $out/cpm
+ ln -s ${cpmSrc} $out/cpm/CPM_${cpmDownloadVersion}.cmake
+ '';
+
+ pathMappings = [
+ {
+ from = "LV2";
+ to = "${placeholder "out"}/${
+ if stdenv.hostPlatform.isDarwin then "Library/Audio/Plug-Ins/LV2" else "lib/lv2"
+ }";
+ }
+ {
+ from = "VST3";
+ to = "${placeholder "out"}/${
+ if stdenv.hostPlatform.isDarwin then "Library/Audio/Plug-Ins/VST3" else "lib/vst3"
+ }";
+ }
+ # this one's a guess, don't know where ppl have agreed to put them yet
+ {
+ from = "CLAP";
+ to = "${placeholder "out"}/${
+ if stdenv.hostPlatform.isDarwin then "Library/Audio/Plug-Ins/CLAP" else "lib/clap"
+ }";
+ }
+ ]
+ ++ lib.optionals withStandalone [
+ {
+ from = "Standalone";
+ to = "${placeholder "out"}/bin";
+ }
+ ]
+ ++ lib.optionals stdenv.hostPlatform.isDarwin [
+ # Audio Unit is a macOS-specific thing
+ {
+ from = "AU";
+ to = "${placeholder "out"}/Library/Audio/Plug-Ins/Components";
+ }
+ ];
+
+ x11Libs = [
+ libX11
+ libXrandr
+ libXinerama
+ libXext
+ libXcursor
+ ];
+in
stdenv.mkDerivation (finalAttrs: {
pname = "fire";
- version = "1.0.1-unstable-2025-03-12";
+ version = "1.0.2-unstable-2025-07-05";
src = fetchFromGitHub {
owner = "jerryuhoo";
repo = "Fire";
- rev = "b7ded116ce7ab78a57bb9b6b61796cb2cf3a6e8b";
+ rev = "a0553c6fcced4919871771da3add390e931e29de";
fetchSubmodules = true;
- hash = "sha256-d8w+b4OpU2/kQdcAimR4ihDEgVTM1V7J0hj7saDrQpY=";
+ hash = "sha256-bHqWP3EZQg42OBi44Z1RvkIB2Ou0dDxgBLcidgxaMU8=";
};
- postPatch = ''
- # Disable automatic copying of built plugins during buildPhase, it defaults
- # into user home and we want to have building & installing separated.
- substituteInPlace CMakeLists.txt \
- --replace-fail 'COPY_PLUGIN_AFTER_BUILD TRUE' 'COPY_PLUGIN_AFTER_BUILD FALSE'
- ''
- + lib.optionalString stdenv.hostPlatform.isLinux ''
- # Remove hardcoded LTO flags: needs extra setup on Linux
- substituteInPlace CMakeLists.txt \
- --replace-fail 'juce::juce_recommended_lto_flags' '# Not forcing LTO'
- ''
- + lib.optionalString (!finalAttrs.finalPackage.doCheck) ''
- substituteInPlace CMakeLists.txt \
- --replace-fail 'include(Tests)' '# Not building tests' \
- --replace-fail 'include(Benchmarks)' '# Not building benchmark test'
- '';
+ postPatch =
+ let
+ formatsListing = lib.strings.concatMapStringsSep " " (entry: entry.from) pathMappings;
+ in
+ ''
+ # Allow all the formats we can handle
+ # Set LV2URI again for LV2 build
+ # Disable automatic copying of built plugins during buildPhase, it defaults
+ # into user home and we want to have building & installing separated.
+ substituteInPlace CMakeLists.txt \
+ --replace-fail 'set(FORMATS' 'set(FORMATS ${formatsListing}) #' \
+ --replace-fail 'BUNDLE_ID "''${BUNDLE_ID}"' 'BUNDLE_ID "''${BUNDLE_ID}" LV2URI "https://www.bluewingsmusic.com/Fire/"' \
+ --replace-fail 'COPY_PLUGIN_AFTER_BUILD TRUE' 'COPY_PLUGIN_AFTER_BUILD FALSE'
+ ''
+ + lib.optionalString stdenv.hostPlatform.isLinux ''
+ # Remove hardcoded LTO flags: needs extra setup on Linux
+ substituteInPlace CMakeLists.txt \
+ --replace-fail 'juce::juce_recommended_lto_flags' '# Not forcing LTO'
+ ''
+ + lib.optionalString (!finalAttrs.finalPackage.doCheck) ''
+ substituteInPlace CMakeLists.txt \
+ --replace-fail 'include(Tests)' '# Not building tests' \
+ --replace-fail 'include(Benchmarks)' '# Not building benchmark test'
+ '';
strictDeps = true;
@@ -51,74 +120,55 @@ stdenv.mkDerivation (finalAttrs: {
pkg-config
];
- buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
- libX11
- libXrandr
- libXinerama
- libXext
- libXcursor
- freetype
- alsa-lib
- ];
+ buildInputs = [
+ catch2_3
+ fontconfig
+ ]
+ ++ lib.optionals stdenv.hostPlatform.isLinux (
+ x11Libs
+ ++ [
+ freetype
+ alsa-lib
+ ]
+ );
cmakeFlags = [
- (lib.cmakeBool "FETCHCONTENT_FULLY_DISCONNECTED" true)
- (lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_CATCH2" "${catch2_3.src}")
+ (lib.cmakeFeature "CPM_SOURCE_CACHE" "${cpmSourceCache}")
+ (lib.cmakeBool "CPM_LOCAL_PACKAGES_ONLY" true)
+ (lib.cmakeFeature "Catch2_SOURCE_DIR" "${catch2_3.src}")
];
- installPhase =
- let
- pathMappings = [
- {
- from = "LV2";
- to = "${placeholder "out"}/${
- if stdenv.hostPlatform.isDarwin then "Library/Audio/Plug-Ins/LV2" else "lib/lv2"
- }";
- }
- {
- from = "VST3";
- to = "${placeholder "out"}/${
- if stdenv.hostPlatform.isDarwin then "Library/Audio/Plug-Ins/VST3" else "lib/vst3"
- }";
- }
- # this one's a guess, don't know where ppl have agreed to put them yet
- {
- from = "CLAP";
- to = "${placeholder "out"}/${
- if stdenv.hostPlatform.isDarwin then "Library/Audio/Plug-Ins/CLAP" else "lib/clap"
- }";
- }
- ]
- ++ lib.optionals stdenv.hostPlatform.isDarwin [
- {
- from = "AU";
- to = "${placeholder "out"}/Library/Audio/Plug-Ins/Components";
- }
- ];
- in
- ''
- runHook preInstall
+ installPhase = ''
+ runHook preInstall
- ''
- + lib.strings.concatMapStringsSep "\n" (entry: ''
- mkdir -p ${entry.to}
- # Exact path of the build artefact depends on used CMAKE_BUILD_TYPE
- cp -r Fire_artefacts/*/${entry.from}/* ${entry.to}/
- '') pathMappings
- + ''
+ ''
+ + lib.strings.concatMapStringsSep "\n" (entry: ''
+ mkdir -p ${entry.to}
+ # Exact path of the build artefact depends on used CMAKE_BUILD_TYPE
+ cp -r -t ${entry.to} Fire_artefacts/${finalAttrs.cmakeBuildType or "Release"}/${entry.from}/*
+ '') pathMappings
+ + ''
- runHook postInstall
- '';
+ runHook postInstall
+ '';
doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
+ # Standalone dlopen's X11 libraries
+ postFixup = lib.strings.optionalString (withStandalone && stdenv.hostPlatform.isLinux) ''
+ patchelf --add-rpath ${lib.makeLibraryPath x11Libs} $out/bin/Fire
+ '';
+
passthru.updateScript = unstableGitUpdater { tagPrefix = "v"; };
meta = {
description = "Multi-band distortion plugin by Wings";
- homepage = "https://github.com/jerryuhoo/Fire";
+ homepage = "https://www.bluewingsmusic.com/Fire";
license = lib.licenses.agpl3Only; # Not clarified if Only or Plus
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ OPNA2608 ];
+ }
+ // lib.optionalAttrs withStandalone {
+ mainProgram = "Fire";
};
})