* nongnu/packages/music.scm (bitwig-studio) [#:patchelf-plan]: Remove "lubusb4java.so". [#:phases]: Unbundle "libusb4java.so". [inputs]: Add libusb4java. [supported-systems]: Add "x86_64-linux".
250 lines
11 KiB
Scheme
250 lines
11 KiB
Scheme
;;; SPDX-License-Identifier: GPL-3.0-or-later
|
|
;;; Copyright © 2022, 2023 Sughosha <sughosha@proton.me>
|
|
;;; Copyright © 2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
|
|
|
|
(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 gl)
|
|
#:use-module (gnu packages glib)
|
|
#:use-module (gnu packages gtk)
|
|
#:use-module (gnu packages java)
|
|
#:use-module (gnu packages libusb)
|
|
#:use-module (gnu packages llvm)
|
|
#:use-module (gnu packages linux)
|
|
#:use-module (gnu packages pulseaudio)
|
|
#:use-module (gnu packages video)
|
|
#:use-module (gnu packages xdisorg)
|
|
#:use-module (gnu packages xorg)
|
|
#:use-module (guix build utils)
|
|
#:use-module (guix download)
|
|
#:use-module (guix gexp)
|
|
#:use-module (guix packages)
|
|
#:use-module (guix utils)
|
|
#:use-module (ice-9 match)
|
|
#:use-module (ice-9 regex)
|
|
#:use-module ((nonguix licenses) #:prefix license:)
|
|
#:use-module (nonguix build-system binary))
|
|
|
|
(define-public reaper
|
|
(package
|
|
(name "reaper")
|
|
(version "6.73")
|
|
(source
|
|
(origin
|
|
(method url-fetch)
|
|
(uri (string-append "https://www.reaper.fm/files/"
|
|
(version-major version)
|
|
".x/reaper"
|
|
(string-replace-substring version "." "")
|
|
"_"
|
|
(match (%current-system)
|
|
("x86_64-linux" "linux_x86_64")
|
|
("i686-linux" "linux_i686")
|
|
("aarch64-linux" "linux_aarch64")
|
|
("armhf-linux" "linux_armv7l"))
|
|
".tar.xz"))
|
|
(sha256
|
|
(base32
|
|
(match (%current-system)
|
|
("x86_64-linux" "1hd7fbk0px45fxhqa7nqcnij8ls2fhpjp60v840vy2zqs9fkcr52")
|
|
("i686-linux" "11vk32mxyda9xl08pp2ivd1vsahnw6w7d08in4syz6iannfwp19b")
|
|
("aarch64-linux" "0zpkaiwwxn8yh3s1d22qswshbgaxx5d8iy17hb3w256zgb722yjw")
|
|
("armhf-linux" "18174b1lgsk73gxhala471ppzbrpa1cs953b5par998yqgh74znk"))))))
|
|
(build-system binary-build-system)
|
|
(arguments
|
|
(list #:strip-binaries? #f ;allocated section `.dynsym' not in segment
|
|
#:patchelf-plan #~`(("REAPER/reaper" ("libc" "gcc" "alsa-lib"))
|
|
("REAPER/reamote-server" ("libc" "gcc"))
|
|
("REAPER/Plugins/reaper_host_x86_64" ("libc" "gcc")))
|
|
#:phases #~(modify-phases %standard-phases
|
|
(replace 'install
|
|
(lambda* (#:key outputs inputs #:allow-other-keys)
|
|
(let* ((target (string-append #$output "/opt"))
|
|
(bin (string-append #$output "/bin"))
|
|
(libexec (string-append #$output "/libexec"))
|
|
(data (string-append #$output "/share"))
|
|
(doc (string-append data "/doc/reaper-"
|
|
#$version)))
|
|
(setenv "HOME" "/tmp")
|
|
(setenv "XDG_DATA_HOME" data)
|
|
(invoke "sh" "./install-reaper.sh" "--install"
|
|
target "--integrate-user-desktop")
|
|
(delete-file (string-append target
|
|
"/REAPER/uninstall-reaper.sh"))
|
|
(delete-file (string-append target
|
|
"/REAPER/libSwell.so"))
|
|
(symlink (search-input-file inputs
|
|
"/lib/libSwell.so")
|
|
(string-append target
|
|
"/REAPER/libSwell.so"))
|
|
(mkdir-p bin)
|
|
(symlink (string-append target "/REAPER/reaper")
|
|
(string-append bin "/reaper"))
|
|
(mkdir-p libexec)
|
|
(symlink (string-append target
|
|
"/REAPER/Plugins/reaper_host_x86_64")
|
|
(string-append libexec
|
|
"/reaper_host_x86_64"))
|
|
(mkdir-p doc)
|
|
(symlink (string-append target
|
|
"/REAPER/EULA.txt")
|
|
(string-append doc "/LICENSE"))))))))
|
|
(native-inputs
|
|
(list
|
|
which
|
|
xdg-utils))
|
|
(inputs
|
|
(list
|
|
alsa-lib
|
|
`(,gcc "lib")
|
|
wdl))
|
|
(supported-systems '("x86_64-linux" "i686-linux" "aarch64-linux"
|
|
"armhf-linux"))
|
|
(home-page "https://www.reaper.fm")
|
|
(synopsis "Digital audio workstation")
|
|
(description
|
|
"REAPER is a digital audio production application offering multitrack
|
|
audio and MIDI recording, editing, processing, mixing and mastering toolset.
|
|
It supports a vast range of hardware, digital formats and plugins, and can be
|
|
comprehensively extended, scripted and modified.")
|
|
(license (license:nonfree "file:///opt/REAPER/EULA.txt"))))
|
|
|
|
(define-public bitwig-studio
|
|
(package
|
|
(name "bitwig-studio")
|
|
(version "4.4.10")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "https://downloads.bitwig.com/" version
|
|
"/bitwig-studio-" version ".deb"))
|
|
(sha256
|
|
(base32
|
|
"11bgnbd2x10r605q29j97nj7q7j9ncqfar6ni630ml742nd3bm42"))))
|
|
(build-system binary-build-system)
|
|
(arguments
|
|
(list #:patchelf-plan
|
|
#~`(("opt/bitwig-studio/bitwig-studio" ("libc"))
|
|
("opt/bitwig-studio/BitwigStudio" ("libc"))
|
|
("opt/bitwig-studio/bin/BitwigAudioEngine-X64-AVX2"
|
|
("libc" "libx11" "libxkbcommon" "libxcb" "xcb-util"
|
|
"xcb-util-wm" "alsa-lib" "jack" "pulseaudio" "zlib"))
|
|
("opt/bitwig-studio/bin/BitwigAudioEngine-X64-SSE41"
|
|
("libc" "libx11" "libxkbcommon" "libxcb" "xcb-util"
|
|
"xcb-util-wm" "alsa-lib" "jack" "pulseaudio" "zlib"))
|
|
;; TODO: Patch "BitwigPluginHost-x86-SSE41" with "i686-linux"
|
|
;; libraries.
|
|
("opt/bitwig-studio/bin/BitwigPluginHost-X64-SSE41"
|
|
("libc" "libx11" "libxkbcommon" "libxcb" "xcb-util"
|
|
"xcb-util-wm"))
|
|
("opt/bitwig-studio/bin/BitwigVampHost" ("libc" "alsa-lib"))
|
|
;; FIXME: Package "lwjgl" and unbundle it.
|
|
("opt/bitwig-studio/bin/liblwjgl.so" ("libc" "gcc" "gtk+"))
|
|
("opt/bitwig-studio/bin/show-file-dialog-gtk3"
|
|
("libc" "gcc" "libx11" "glib" "gtk+"))
|
|
("opt/bitwig-studio/bin/show-splash-gtk"
|
|
("libc" "glib" "gdk-pixbuf" "gtk+"))
|
|
("opt/bitwig-studio/lib/audio-host-api-plugins/PipeWireAudioHostApiPlugin.so"
|
|
("libc" "pipewire"))
|
|
("opt/bitwig-studio/lib/bitwig-studio/libbase-file-notification-linux.so"
|
|
("libc"))
|
|
("opt/bitwig-studio/lib/bitwig-studio/libbase-platform.so"
|
|
("libc"))
|
|
("opt/bitwig-studio/lib/bitwig-studio/libbase-sound.so"
|
|
("libc"))
|
|
("opt/bitwig-studio/lib/bitwig-studio/libcairo-freetype-font-system.so"
|
|
("libc" "freetype" "cairo"))
|
|
("opt/bitwig-studio/lib/bitwig-studio/libcairo-graphics.so"
|
|
("libc" "freetype" "cairo"))
|
|
("opt/bitwig-studio/lib/bitwig-studio/libgraphics-core.so"
|
|
("libc"))
|
|
("opt/bitwig-studio/lib/bitwig-studio/libsqlitejdbc.so"
|
|
("libc"))
|
|
("opt/bitwig-studio/lib/bitwig-studio/libx11-windowing-system.so"
|
|
("libc" "mesa" "libxkbcommon" "libxcb" "libxcursor" "libx11"
|
|
"xcb-util-wm" "xcb-imdkit" "freetype" "cairo"))
|
|
("opt/bitwig-studio/lib/vamp-plugins/transient-detector.so"
|
|
("libc")))
|
|
#:install-plan
|
|
#~`(("opt" "opt")
|
|
("usr/share" "share"))
|
|
#:phases
|
|
#~(modify-phases %standard-phases
|
|
(replace 'unpack
|
|
(lambda _
|
|
(invoke "ar" "x" #$source)
|
|
(invoke "rm" "-v" "control.tar.xz" "debian-binary")
|
|
(invoke "tar" "xf" "data.tar.xz")
|
|
(invoke "rm" "-vrf" "data.tar.xz")))
|
|
(add-after 'unpack 'unbundle-deps
|
|
(lambda _
|
|
(with-directory-excursion "opt/bitwig-studio"
|
|
(with-directory-excursion "lib"
|
|
(for-each delete-file-recursively
|
|
(list "cp" "jre")))
|
|
(for-each delete-file
|
|
(list "bin/BitwigStudio"
|
|
"bin/ffmpeg"
|
|
"bin/ffprobe"
|
|
"bin/libLTO.so"
|
|
"bin/libxcb-imdkit.so"
|
|
"lib/bitwig-studio/libxcb-imdkit.so.1"))
|
|
(symlink (string-append #$openjdk17 "/bin/java")
|
|
"bin/BitwigStudio"))))
|
|
(add-after 'install 'create-wrapper
|
|
(lambda _
|
|
(make-wrapper
|
|
(string-append #$output "/bin/bitwig-studio")
|
|
(string-append #$output
|
|
"/opt/bitwig-studio/bitwig-studio")
|
|
#:skip-argument-0? #t
|
|
`("PATH" prefix
|
|
(,(string-append #$ffmpeg "/lib")))
|
|
`("LD_LIBRARY_PATH" ":" suffix
|
|
(,(string-append #$xcb-imdkit "/lib")
|
|
,(string-append #$llvm-13 "/lib")
|
|
,(string-append #$libusb4java "/lib"))))))
|
|
(replace 'install-license-files
|
|
(lambda _
|
|
(install-file
|
|
(string-append "opt/bitwig-studio/EULA.txt")
|
|
(string-append #$output "/share/doc/"
|
|
(strip-store-file-name #$output))))))))
|
|
(inputs
|
|
(list alsa-lib
|
|
cairo
|
|
ffmpeg
|
|
freetype
|
|
`(,gcc "lib")
|
|
gdk-pixbuf
|
|
glib
|
|
gtk+
|
|
jack-1
|
|
libusb4java
|
|
libx11
|
|
libxcb
|
|
libxkbcommon
|
|
llvm-13
|
|
mesa
|
|
openjdk17
|
|
pipewire
|
|
pulseaudio
|
|
xcb-imdkit
|
|
xcb-util
|
|
xcb-util-wm
|
|
zlib))
|
|
(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"))))
|