;;; Copyright © 2021 Josselin Poiret ;;; Copyright © 2022 Tobias Geerinckx-Rice ;;; Copyright © 2021 Mathieu Othacehe ;;; Copyright © 2022 Maxim Cournoyer ;;; Copyright © 2022 Juliana Sims ;;; Copyright © 2022 Marcel Kupiec ;;; Copyright © 2022 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (gnu packages pipewire) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system cmake) #:use-module (guix build-system meson) #:use-module (guix download) #:use-module (guix gexp) #:use-module (guix git-download) #:use-module (guix packages) #:use-module (gnu packages) #:use-module (gnu packages algebra) #:use-module (gnu packages audio) #:use-module (gnu packages cmake) #:use-module (gnu packages cpp) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages linux) #:use-module (gnu packages lua) #:use-module (gnu packages music) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pretty-print) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages qt) #:use-module (gnu packages tbb) #:use-module (gnu packages xdisorg) #:use-module (gnu packages xiph)) (define-public wireplumber (package (name "wireplumber") (version "0.4.6") (source (origin (method git-fetch) (uri (git-reference (url "https://gitlab.freedesktop.org/pipewire/wireplumber.git") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "0g7xkgkjlxrhs49hqkwrjk2hb478gq55wwydafvvbsv78vsa7qfb")))) (build-system meson-build-system) (arguments `(#:configure-flags '("-Dsystemd=disabled" "-Dsystem-lua=true"))) (native-inputs (list `(,glib "bin") pkg-config)) (inputs (list dbus elogind glib lua pipewire-0.3)) (home-page "https://gitlab.freedesktop.org/pipewire/wireplumber") (synopsis "Session / policy manager implementation for PipeWire") (description "WirePlumber is a modular session / policy manager for PipeWire and a GObject-based high-level library that wraps PipeWire's API, providing convenience for writing the daemon's modules as well as external tools for managing PipeWire.") (license license:expat))) (define-public qpwgraph (package (name "qpwgraph") (version "0.3.4") (source (origin (method git-fetch) (uri (git-reference (url "https://gitlab.freedesktop.org/rncbc/qpwgraph") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "1xqmlbqj6ny4cpclzr8xyy6d6i392h9f1vmlbasp6xfy5b0yya94")))) (build-system cmake-build-system) (arguments (list #:tests? #f)) ;; no tests (inputs (list alsa-lib libxkbcommon pipewire-0.3 qtbase qtsvg)) (native-inputs (list pkg-config)) (synopsis "PipeWire graph manager") (description "qpwgraph is a graph manager dedicated to PipeWire, using the Qt C++ framework. It provides a visual interface to audio and video connections managed by PipeWire.") (home-page "https://gitlab.freedesktop.org/rncbc/qpwgraph") (license license:gpl2))) (define-public easyeffects (let ((toolchain (specification->package "gcc-toolchain@11"))) ;; for std::source_location (package-with-c-toolchain (package (name "easyeffects") (version "6.2.8") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/wwmm/easyeffects") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 (base32 "0ahwgcvw7krbylhk00cacikzlaical344i3jkcmq5vr6vl5c8048")))) (build-system meson-build-system) (arguments (list #:glib-or-gtk? #t #:phases #~(modify-phases %standard-phases (add-after 'unpack 'skip-gtk-update-icon-cache (lambda _ (substitute* "meson_post_install.py" (("gtk4-update-icon-cache") (which "true")))))))) (inputs (list gnome-autoar calf fftwf fmt gtk libadwaita libbs2b libebur128 libsamplerate libsigc++ libsndfile lilv lsp-plugins lv2 mda-lv2 pipewire-0.3 rubberband speexdsp tbb xiph-rnnoise zam-plugins zita-convolver)) (native-inputs (list desktop-file-utils ;for update-desktop-database `(,glib "bin") appstream-glib cmake gettext-minimal itstool json-modern-cxx pkg-config)) (home-page "https://github.com/wwmm/easyeffects") (synopsis "Audio effects for PipeWire applications") (description "EasyEffects is an advanced audio manipulation tool. It includes an equalizer, limiter, compressor and a reverberation tool, just to mention a few. To complement this there is also a built in spectrum analyzer. Besides manipulating sound output, EasyEffects is able to apply effects to an input device, such as a microphone. This is, for example, useful in audio recording, but it also works well during voice conversations.") (license license:gpl3+)) `(("toolchain" ,toolchain)))))