diff --git a/nongnu/packages/music.scm b/nongnu/packages/music.scm index 37df5825..a5307e18 100644 --- a/nongnu/packages/music.scm +++ b/nongnu/packages/music.scm @@ -1,14 +1,29 @@ ;;; SPDX-License-Identifier: GPL-3.0-or-later -;;; Copyright © 2022 Sughosha +;;; Copyright © 2022-2025 Sughosha ;;; Copyright © 2023 Jonathan Brielmaier (define-module (nongnu packages music) #:use-module (gnu packages audio) #:use-module (gnu packages base) + #:use-module (gnu packages compression) #:use-module (gnu packages cpp) + #:use-module (gnu packages fcitx5) + #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gcc) + #:use-module (gnu packages ghostscript) + #:use-module (gnu packages gl) + #:use-module (gnu packages glib) + #:use-module (gnu packages gtk) + #:use-module (gnu packages image) + #:use-module (gnu packages libusb) #:use-module (gnu packages linux) + #:use-module (gnu packages llvm) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages video) + #:use-module (gnu packages vulkan) + #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xorg) #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix packages) @@ -18,6 +33,194 @@ #:use-module ((nonguix licenses) #:prefix license:) #:use-module (nonguix build-system binary)) +(define-public bitwig-studio + (package + (name "bitwig-studio") + (version "5.3.13") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.bitwig.com/dl/Bitwig%20Studio/" version + "/installer_linux")) + (sha256 + (base32 "0yh2ii19qiakswjz9vjlxcdqrq34g576n2xwl74816yksz7q67xp")) + (file-name (string-append "bitwig-studio-" version ".deb")))) + (build-system binary-build-system) + (arguments + (list #:install-plan + #~`(("opt" "opt" + #:exclude ("BitwigPluginHost-X86-SSE41")) ;no multilib support + ("usr/share" "share")) + #:phases + #~(modify-phases %standard-phases + (add-after 'binary-unpack 'unbundle-deps + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "opt/bitwig-studio" + ;; FIXME: Package "lwjgl3" and unbundle "bin/liblwjgl.so". + ;; FIXME: Unbundle "jre" if an "openjdk" package of the + ;; same version is available. + (for-each delete-file + '("bin/ffmpeg" + "bin/ffprobe" + "bin/libLTO.so" + "lib/bitwig-studio/libxcb-imdkit.so.1" + "lib/cp/org/usb4java/linux-x86-64/libusb4java.so")) + ;; Link "libusb4java.so" from the system. + (symlink (search-input-file inputs "/lib/libusb4java.so") + (string-append "lib/cp/org/usb4java/" + "linux-x86-64/libusb4java.so"))))) + (replace 'patchelf + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "opt/bitwig-studio" + (invoke "patchelf" "--set-interpreter" + (string-append (assoc-ref inputs "libc") + "/lib/ld-linux-x86-64.so.2") + "bitwig-studio" + "BitwigStudio" + "bin/BitwigAudioEngine-X64-AVX2" + "bin/BitwigAudioEngine-X64-SSE41" + "bin/BitwigPluginHost-X64-SSE41" + "bin/BitwigVampHost" + "bin/show-file-dialog-gtk3" + "bin/show-splash-gtk" + "lib/jre/bin/java" + "lib/jre/bin/jrunscript" + "lib/jre/bin/jwebserver" + "lib/jre/bin/keytool" + "lib/jre/lib/jexec" + "lib/jre/lib/jspawnhelper")))) + (add-after 'install 'create-wrapper + (lambda* (#:key inputs #:allow-other-keys) + (let ((libs + (string-join (map (lambda (input) + (string-append (assoc-ref inputs + input) + "/lib")) + '("alsa-lib" + "at-spi2-core" + "cairo" + "dbus" + "eudev" + "ffmpeg" + "fontconfig-minimal" + "freetype" + "gcc" + "gdk-pixbuf" + "giflib" + "glib" + "gtk+" + "harfbuzz" + "jack2" + "lcms" + "libglvnd" + "libjpeg-turbo" + "libpng" + "libusb4java" + "libx11" + "libxcb" + "libxcursor" + "libxext" + "libxi" + "libxkbcommon" + "libxrender" + "libxtst" + "llvm" + "mesa" + "pango" + "pipewire" + "pulseaudio" + "vulkan-loader" + "xcb-imdkit" + "xcb-util" + "xcb-util-wm" + "zlib")) + ":"))) + (with-directory-excursion + (string-append #$output "/opt/bitwig-studio") + (for-each + (lambda (file) + (wrap-program file + `("LD_LIBRARY_PATH" ":" suffix (,libs)))) + '("bitwig-studio" + "BitwigStudio" + "bin/BitwigAudioEngine-X64-AVX2" + "bin/BitwigAudioEngine-X64-SSE41" + "bin/BitwigPluginHost-X64-SSE41" + "bin/BitwigVampHost" + "bin/show-file-dialog-gtk3" + "bin/show-splash-gtk" + "lib/jre/bin/java" + "lib/jre/bin/jrunscript" + "lib/jre/bin/jwebserver" + "lib/jre/bin/keytool" + "lib/jre/lib/jexec" + "lib/jre/lib/jspawnhelper"))) + (make-wrapper + (string-append #$output "/bin/bitwig-studio") + (string-append #$output + "/opt/bitwig-studio/bitwig-studio") + #:skip-argument-0? #t + `("PATH" suffix + (,(string-append (assoc-ref inputs "ffmpeg") "/bin"))) + `("LD_LIBRARY_PATH" ":" suffix (,libs)))))) + (replace 'install-license-files + (lambda _ + (install-file + (string-append "opt/bitwig-studio/EULA.txt") + (string-append #$output "/share/doc/" + (strip-store-file-name #$output)))))))) + (native-inputs + (list zstd)) + (propagated-inputs + (list at-spi2-core gtk+)) + (inputs + (list alsa-lib + cairo + dbus + eudev + ffmpeg + fontconfig + freetype + `(,gcc "lib") + gdk-pixbuf + giflib + glib + harfbuzz + jack-2 + lcms + libglvnd + libjpeg-turbo + libpng + libusb4java + libx11 + libxcb + libxcursor + libxext + libxi + libxkbcommon + libxrender + libxtst + llvm-19 + mesa + pango + pipewire + pulseaudio + vulkan-loader + xcb-imdkit + xcb-util + xcb-util-wm + zlib)) + (supported-systems + (list "x86_64-linux")) + (home-page "https://www.bitwig.com/") + (synopsis "Music production and performance software") + (description + "Bitwig Studio is a digital audio workstation which is aimed at loop based +live performance and production. It features modulations, macros, note +expressions, LFOs and envelopes. It also supports VST plugins and hardware +integration.") + (license (license:nonfree "file:///opt/bitwig-studio/EULA.txt")))) + (define-public reaper (package (name "reaper")