From 3b9ec6d418e5579331215c5f50255449f576fec4 Mon Sep 17 00:00:00 2001 From: Philipp Mildenberger Date: Thu, 29 Jun 2023 15:34:25 +0200 Subject: [PATCH] bitwig-studio5: init at 5.0 --- .../audio/bitwig-studio/bitwig-studio5.nix | 126 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 5 +- 2 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 pkgs/applications/audio/bitwig-studio/bitwig-studio5.nix diff --git a/pkgs/applications/audio/bitwig-studio/bitwig-studio5.nix b/pkgs/applications/audio/bitwig-studio/bitwig-studio5.nix new file mode 100644 index 000000000000..2e2a28946074 --- /dev/null +++ b/pkgs/applications/audio/bitwig-studio/bitwig-studio5.nix @@ -0,0 +1,126 @@ +{ stdenv +, fetchurl +, alsa-lib +, atk +, cairo +, dpkg +, ffmpeg +, freetype +, gdk-pixbuf +, glib +, gtk3 +, harfbuzz +, lib +, libglvnd +, libjack2 +, libjpeg +, libxkbcommon +, makeWrapper +, pango +, pipewire +, pulseaudio +, wrapGAppsHook +, xdg-utils +, xorg +, zlib +}: + +stdenv.mkDerivation rec { + pname = "bitwig-studio"; + version = "5.0"; + + src = fetchurl { + url = "https://downloads.bitwig.com/stable/${version}/${pname}-${version}.deb"; + sha256 = "sha256-0/S/aNoQA1nAdnr8nUWVLwzrDm+MHqmGIIjPW5YIr7s="; + }; + + nativeBuildInputs = [ dpkg makeWrapper wrapGAppsHook ]; + + unpackCmd = '' + mkdir -p root + dpkg-deb -x $curSrc root + ''; + + dontBuild = true; + dontWrapGApps = true; # we only want $gappsWrapperArgs here + + buildInputs = with xorg; [ + alsa-lib + atk + cairo + freetype + gdk-pixbuf + glib + gtk3 + harfbuzz + libglvnd + libjack2 + # libjpeg8 is required for converting jpeg's to colour palettes + libjpeg + libxcb + libXcursor + libX11 + libXtst + libxkbcommon + pango + pipewire + pulseaudio + stdenv.cc.cc.lib + xcbutil + xcbutilwm + zlib + ]; + + installPhase = '' + runHook preInstall + + mkdir -p $out/bin + cp -r opt/bitwig-studio $out/libexec + ln -s $out/libexec/bitwig-studio $out/bin/bitwig-studio + cp -r usr/share $out/share + substitute usr/share/applications/com.bitwig.BitwigStudio.desktop \ + $out/share/applications/com.bitwig.BitwigStudio.desktop \ + --replace /usr/bin/bitwig-studio $out/bin/bitwig-studio + + runHook postInstall + ''; + + postFixup = '' + # patchelf fails to set rpath on BitwigStudioEngine, so we use + # the LD_LIBRARY_PATH way + + find $out -type f -executable \ + -not -name '*.so.*' \ + -not -name '*.so' \ + -not -name '*.jar' \ + -not -name 'jspawnhelper' \ + -not -path '*/resources/*' | \ + while IFS= read -r f ; do + patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" $f + # make xdg-open overrideable at runtime + wrapProgram $f \ + "''${gappsWrapperArgs[@]}" \ + --prefix PATH : "${lib.makeBinPath [ ffmpeg ]}" \ + --suffix PATH : "${lib.makeBinPath [ xdg-utils ]}" \ + --suffix LD_LIBRARY_PATH : "${lib.strings.makeLibraryPath buildInputs}" + done + + find $out -type f -executable -name 'jspawnhelper' | \ + while IFS= read -r f ; do + patchelf --set-interpreter "${stdenv.cc.bintools.dynamicLinker}" $f + done + ''; + + meta = with lib; { + description = "A digital audio workstation"; + longDescription = '' + Bitwig Studio is a multi-platform music-creation system for + production, performance and DJing, with a focus on flexible + editing tools and a super-fast workflow. + ''; + homepage = "https://www.bitwig.com/"; + license = licenses.unfree; + platforms = [ "x86_64-linux" ]; + maintainers = with maintainers; [ bfortz michalrus mrVanDalo ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9d12f727b72c..6f957a1e546a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -29943,8 +29943,11 @@ with pkgs; bitwig-studio4 = callPackage ../applications/audio/bitwig-studio/bitwig-studio4.nix { libjpeg = libjpeg.override { enableJpeg8 = true; }; }; + bitwig-studio5 = callPackage ../applications/audio/bitwig-studio/bitwig-studio5.nix { + libjpeg = libjpeg.override { enableJpeg8 = true; }; + }; - bitwig-studio = bitwig-studio4; + bitwig-studio = bitwig-studio5; bgpdump = callPackage ../tools/networking/bgpdump { };