;;; SPDX-License-Identifier: GPL-3.0-or-later ;;; Copyright © 2022-2023 Sughosha ;;; Copyright © 2023 Jonathan Brielmaier (define-module (nongnu packages music) #:use-module (gnu packages audio) #:use-module (gnu packages cpp) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gcc) #:use-module (gnu packages linux) #:use-module (gnu packages pulseaudio) #: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 "7.02") (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" "0apnkv28x2vdlh7q26xsrn3b0y06cj4xgwsl1dh4rkkylrcld87k") ("i686-linux" "00b4hdk0i4gqlk3h5y9s07fhpvklazl2f2mzbr34m41s7avfnmx5") ("aarch64-linux" "15skc16w3yl0fbs15h39xzf2xk1y5q1919fqrvwinq5r73ig55wh") ("armhf-linux" "1laaiw4dcmaxzf7g3f0dmlihk53p50xnk8rmj8nw18yf7qhcscbs")))))) (build-system binary-build-system) (arguments (list #:strip-binaries? #f ;allocated section `.dynsym' not in segment #:patchelf-plan #~(let ((libs (list "libc" "gcc"))) (list (list "REAPER/reaper" (append libs (list "alsa-lib" "jack" "pulseaudio"))) (list "REAPER/Plugins/reaper_host_x86_64" (append libs (list "alsa-lib" "jack" "pulseaudio"))) (list "REAPER/Plugins/elastique3.so" libs) (list "REAPER/Plugins/jsfx.so" libs) (list "REAPER/Plugins/reaper_cd.so" libs) (list "REAPER/Plugins/reaper_csurf.so" libs) (list "REAPER/Plugins/reaper_ddp.so" libs) (list "REAPER/Plugins/reaper_explorer.so" libs) (list "REAPER/Plugins/reaper_flac.so" libs) (list "REAPER/Plugins/reaper_midi.so" libs) (list "REAPER/Plugins/reaper_mp3dec.so" libs) (list "REAPER/Plugins/reaper_ogg.so" libs) (list "REAPER/Plugins/reaper_opus.so" libs) (list "REAPER/Plugins/reaper_video.so" libs) (list "REAPER/Plugins/reaper_wave.so" libs) (list "REAPER/Plugins/reaper_wavpack.so" libs) (list "REAPER/Plugins/rubberband.so" libs) (list "REAPER/Plugins/soundtouch.so" libs) (list "REAPER/Plugins/FX/reacast.vst.so" libs) (list "REAPER/Plugins/FX/reacomp.vst.so" libs) (list "REAPER/Plugins/FX/reacontrolmidi.vst.so" libs) (list "REAPER/Plugins/FX/readelay.vst.so" libs) (list "REAPER/Plugins/FX/reaeq.vst.so" libs) (list "REAPER/Plugins/FX/reafir.vst.so" libs) (list "REAPER/Plugins/FX/reagate.vst.so" libs) (list "REAPER/Plugins/FX/reainsert.vst.so" libs) (list "REAPER/Plugins/FX/realimit.vst.so" libs) (list "REAPER/Plugins/FX/reaninjam.vst.so" libs) (list "REAPER/Plugins/FX/reapitch.vst.so" libs) (list "REAPER/Plugins/FX/reasamplomatic.vst.so" libs) (list "REAPER/Plugins/FX/reastream.vst.so" libs) (list "REAPER/Plugins/FX/reasurround.vst.so" libs) (list "REAPER/Plugins/FX/reasurround2.vst.so" libs) (list "REAPER/Plugins/FX/reasyndr.vst.so" libs) (list "REAPER/Plugins/FX/reacast.vst.so" libs) (list "REAPER/Plugins/FX/reasynth.vst.so" libs) (list "REAPER/Plugins/FX/reatune.vst.so" libs) (list "REAPER/Plugins/FX/reaverb.vst.so" libs) (list "REAPER/Plugins/FX/reaverbate.vst.so" libs) (list "REAPER/Plugins/FX/reavocode.vst.so" libs) (list "REAPER/Plugins/FX/reavoice.vst.so" libs) (list "REAPER/Plugins/FX/reaxcomp.vst.so" libs))) #: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")) (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 doc) (symlink (string-append target "/REAPER/EULA.txt") (string-append doc "/LICENSE")))))))) (native-inputs (list xdg-utils)) (inputs (list alsa-lib `(,gcc "lib") jack-1 pulseaudio wdl)) (supported-systems (list "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"))))