nongnu: Add bitwig-studio.

* nongnu/packages/music.scm (bitwig-studio): New variable.
This commit is contained in:
Sughosha 2025-08-26 13:21:00 +05:30
parent e239cc23e4
commit 785ef5657b

View file

@ -1,14 +1,29 @@
;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; SPDX-License-Identifier: GPL-3.0-or-later
;;; Copyright © 2022 Sughosha <sughosha@proton.me> ;;; Copyright © 2022-2025 Sughosha <sughosha@proton.me>
;;; Copyright © 2023 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;;; Copyright © 2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
(define-module (nongnu packages music) (define-module (nongnu packages music)
#:use-module (gnu packages audio) #:use-module (gnu packages audio)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages cpp) #:use-module (gnu packages cpp)
#:use-module (gnu packages fcitx5)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop) #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gcc) #: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 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 download)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix packages) #:use-module (guix packages)
@ -18,6 +33,194 @@
#:use-module ((nonguix licenses) #:prefix license:) #:use-module ((nonguix licenses) #:prefix license:)
#:use-module (nonguix build-system binary)) #: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 (define-public reaper
(package (package
(name "reaper") (name "reaper")