Subject: [PATCH] gnu: move wireplumber and qpwgraph

From: Formbi <[email-masked]>
Date: Mon, 15 Aug 2022 00:01:09 +0000

This patch moves wireplumber and qpwgraph to the pipewire.scm file.

>From 22fcfec0b82e3a1054a9a0d8a8ba8671287d866c Mon Sep 17 00:00:00 2001
From: Formbi <[email-masked]>
Date: Mon, 15 Aug 2022 01:57:08 +0200
Subject: [PATCH 2/2] gnu: move wireplumber and qpwgraph

---
 0001-add-pipewire.scm-and-easyeffects.patch | 136 ++++++++++++++++++++
 gnu/packages/audio.scm                      |  29 -----
 gnu/packages/linux.scm                      |  30 -----
 gnu/packages/pipewire.scm                   |  65 ++++++++++
 4 files changed, 201 insertions(+), 59 deletions(-)
 create mode 100644 0001-add-pipewire.scm-and-easyeffects.patch

diff --git a/0001-add-pipewire.scm-and-easyeffects.patch b/0001-add-pipewire.scm-and-easyeffects.patch
new file mode 100644
index 0000000000..5be1ef5361
--- /dev/null
+++ b/0001-add-pipewire.scm-and-easyeffects.patch
@@ -0,0 +1,136 @@
+From 817c0f81a1e67b27cdea6010860b6638a6acdd08 Mon Sep 17 00:00:00 2001
+From: Formbi <[email-masked]>
+Date: Mon, 15 Aug 2022 01:44:41 +0200
+Subject: [PATCH] add pipewire.scm and easyeffects
+
+---
+ gnu/packages/pipewire.scm | 117 ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 117 insertions(+)
+ create mode 100644 gnu/packages/pipewire.scm
+
+diff --git a/gnu/packages/pipewire.scm b/gnu/packages/pipewire.scm
+new file mode 100644
+index 0000000000..2b923e0d05
+--- /dev/null
++++ b/gnu/packages/pipewire.scm
+@@ -0,0 +1,117 @@
++;;; Copyright © 2022 Marcel Kupiec <[email-masked]>
++;;;
++;;; 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 <http://www.gnu.org/licenses/>.
++
++
++(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 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)))))
+--
+2.37.0
+
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index aad86bac06..803109fb70 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -5834,32 +5834,3 @@ (define-public odio-sacd
 and DSD streams.")
    (home-page "https://tari.in/www/software/odio-sacd/")
    (license license:gpl3+)))
-
-(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)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index f936dde55a..a8d6627feb 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -8788,36 +8788,6 @@ (define-public pipewire-0.3
                        vulkan-loader
                        vulkan-headers)))))

-(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 ell
   (package
     (name "ell")
diff --git a/gnu/packages/pipewire.scm b/gnu/packages/pipewire.scm
index 2b923e0d05..9fb8ed66ab 100644
--- a/gnu/packages/pipewire.scm
+++ b/gnu/packages/pipewire.scm
@@ -1,4 +1,10 @@
+;;; Copyright © 2021 Josselin Poiret <[email-masked]>
+;;; Copyright © 2022 Tobias Geerinckx-Rice <[email-masked]>
+;;; Copyright © 2021 Mathieu Othacehe <[email-masked]>
+;;; Copyright © 2022 Maxim Cournoyer <[email-masked]>
+;;; Copyright © 2022 Juliana Sims <[email-masked]>
 ;;; Copyright © 2022 Marcel Kupiec <[email-masked]>
+;;; Copyright © 2022 Efraim Flashner <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -46,6 +52,65 @@ (define-module (gnu packages pipewire)
   #: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
--
2.37.0