about summary refs log tree commit diff
path: root/pkgs/by-name/ch/chow-tape-model/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/ch/chow-tape-model/package.nix')
-rw-r--r--pkgs/by-name/ch/chow-tape-model/package.nix132
1 files changed, 132 insertions, 0 deletions
diff --git a/pkgs/by-name/ch/chow-tape-model/package.nix b/pkgs/by-name/ch/chow-tape-model/package.nix
new file mode 100644
index 0000000000000..44fc35073d364
--- /dev/null
+++ b/pkgs/by-name/ch/chow-tape-model/package.nix
@@ -0,0 +1,132 @@
+{ alsa-lib
+, at-spi2-core
+, cmake
+, curl
+, dbus
+, libepoxy
+, fetchFromGitHub
+, freeglut
+, freetype
+, gtk3
+, lib
+, libGL
+, libXcursor
+, libXdmcp
+, libXext
+, libXinerama
+, libXrandr
+, libXtst
+, libdatrie
+, libjack2
+, libpsl
+, libselinux
+, libsepol
+, libsysprof-capture
+, libthai
+, libuuid
+, libxkbcommon
+, lv2
+, pcre
+, pcre2
+, pkg-config
+, python3
+, sqlite
+, gcc11Stdenv
+, webkitgtk
+}:
+let
+  # JUCE version in submodules is incompatible with GCC12
+  # See here: https://forum.juce.com/t/build-fails-on-fedora-wrong-c-version/50902/2
+  stdenv = gcc11Stdenv;
+in
+stdenv.mkDerivation (finalAttrs: {
+  pname = "chow-tape-model";
+  version = "2.11.4";
+
+  src = fetchFromGitHub {
+    owner = "jatinchowdhury18";
+    repo = "AnalogTapeModel";
+    rev = "v${finalAttrs.version}";
+    sha256 = "sha256-WriHi68Y6hAsrwE+74JtVlAKUR9lfTczj6UK9h2FOGM=";
+    fetchSubmodules = true;
+  };
+
+  nativeBuildInputs = [ pkg-config cmake ];
+
+  buildInputs = [
+    alsa-lib
+    at-spi2-core
+    curl
+    dbus
+    libepoxy
+    freeglut
+    freetype
+    gtk3
+    libGL
+    libXcursor
+    libXdmcp
+    libXext
+    libXinerama
+    libXrandr
+    libXtst
+    libdatrie
+    libjack2
+    libpsl
+    libselinux
+    libsepol
+    libsysprof-capture
+    libthai
+    libuuid
+    libxkbcommon
+    lv2
+    pcre
+    pcre2
+    python3
+    sqlite
+    webkitgtk
+  ];
+
+  # Link-time-optimization fails without these
+  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 = "Release";
+
+  postPatch = "cd Plugin";
+
+  installPhase = ''
+    mkdir -p $out/lib/lv2 $out/lib/vst3 $out/lib/clap $out/bin $out/share/doc/CHOWTapeModel/
+    cd CHOWTapeModel_artefacts/${finalAttrs.cmakeBuildType}
+    cp -r LV2/CHOWTapeModel.lv2 $out/lib/lv2
+    cp -r VST3/CHOWTapeModel.vst3 $out/lib/vst3
+    cp -r CLAP/CHOWTapeModel.clap $out/lib/clap
+    cp Standalone/CHOWTapeModel  $out/bin
+    cp ../../../../Manual/ChowTapeManual.pdf $out/share/doc/CHOWTapeModel/
+  '';
+
+  # JUCE dlopens these, make sure they are in rpath
+  # Otherwise, segfault will happen
+  NIX_LDFLAGS = (toString [
+    "-lX11"
+    "-lXext"
+    "-lXcursor"
+    "-lXinerama"
+    "-lXrandr"
+  ]);
+
+  meta = with lib; {
+    homepage = "https://github.com/jatinchowdhury18/AnalogTapeModel";
+    description =
+      "Physical modelling signal processing for analog tape recording. LV2, VST3, CLAP, and standalone";
+    license = with licenses; [ gpl3Only ];
+    maintainers = with maintainers; [ magnetophon ];
+    platforms = platforms.linux;
+    # error: 'vvtanh' was not declared in this scope; did you mean 'tanh'?
+    # error: no matching function for call to 'juce::dsp::SIMDRegister<double>::SIMDRegister(xsimd::simd_batch_traits<xsimd::batch<double, 2> >::batch_bool_type)'
+    broken = stdenv.isAarch64; # since 2021-12-27 on hydra (update to 2.10): https://hydra.nixos.org/build/162558991
+    mainProgram = "CHOWTapeModel";
+  };
+})