From patchwork Wed Nov 1 10:14:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Sughosha X-Patchwork-Id: 55790 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id E679127BBEA; Wed, 1 Nov 2023 10:17:06 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,SPF_HELO_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id EA00A27BBE2 for ; Wed, 1 Nov 2023 10:17:05 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qy8H9-00068S-Ej; Wed, 01 Nov 2023 06:16:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qy8Gz-00067S-Kz for guix-patches@gnu.org; Wed, 01 Nov 2023 06:16:29 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qy8Gy-0003LZ-Cf for guix-patches@gnu.org; Wed, 01 Nov 2023 06:16:29 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qy8HW-0000TA-KA for guix-patches@gnu.org; Wed, 01 Nov 2023 06:17:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#66877] [WIP PATCH 1/1] gnu: home: services: Add home-pipewire. Resent-From: Sughosha Original-Sender: "Debbugs-submit" Resent-CC: , guix-patches@gnu.org Resent-Date: Wed, 01 Nov 2023 10:17:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 66877 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 66877@debbugs.gnu.org Cc: Sughosha , ( , Andrew Tropin , Ludovic =?utf-8?q?Court=C3=A8s?= X-Debbugs-Original-To: guix-patches@gnu.org X-Debbugs-Original-Xcc: ( , Andrew Tropin , Ludovic =?utf-8?q?Court=C3=A8s?= Received: via spool by submit@debbugs.gnu.org id=B.16988338101765 (code B ref -1); Wed, 01 Nov 2023 10:17:02 +0000 Received: (at submit) by debbugs.gnu.org; 1 Nov 2023 10:16:50 +0000 Received: from localhost ([127.0.0.1]:49997 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qy8HK-0000SK-7y for submit@debbugs.gnu.org; Wed, 01 Nov 2023 06:16:50 -0400 Received: from lists.gnu.org ([2001:470:142::17]:44776) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qy8HH-0000Ry-VN for submit@debbugs.gnu.org; Wed, 01 Nov 2023 06:16:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qy8Ge-00064f-5p for guix-patches@gnu.org; Wed, 01 Nov 2023 06:16:08 -0400 Received: from layka.disroot.org ([178.21.23.139]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qy8Ga-0003Iu-7U for guix-patches@gnu.org; Wed, 01 Nov 2023 06:16:07 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 849E044F7A; Wed, 1 Nov 2023 11:16:02 +0100 (CET) X-Virus-Scanned: SPAM Filter at disroot.org Received: from layka.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 80vwfpc-Ayqp; Wed, 1 Nov 2023 11:16:01 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1698833761; bh=NP8RCb/WeBuT+/hqLXttHPObS9KIf12OrHScqgMpIu0=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=VsYUCioSEvpBFifaqTFHEFA5/cPvxVWXbYXc40QDf15fp2OLKQnnvd+EEphx1Nrq+ II+58KAj+eHv63//4tQgZqmTsuIdXdom3NSffwTvEvqBTEZ6RihdL3obxUvoUYSUOl czzf3hfqXegfw7HVggES3RQnqBiKX9Qd477zb0y0SAP7qZ1mi/XRfgmrl8uk+P+e/G vTTXjdiEvQm4qvS+RGWEP7maFipjYEGs0p9+JVLfN74VUNj84VsdyZ8BEz/qdyR3dJ /D4Ge5vSu92M7Nm2rhaNqFGOcye9aCDnIq0iYWUe+9+5EfwVwCnKQXetDAx/yQ8swj j50eIRwkd0dLQ== Date: Wed, 1 Nov 2023 11:14:42 +0100 Message-ID: In-Reply-To: References: MIME-Version: 1.0 Received-SPF: pass client-ip=178.21.23.139; envelope-from=sughosha@disroot.org; helo=layka.disroot.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Sughosha X-ACL-Warn: , Sughosha via Guix-patches X-Patchwork-Original-From: Sughosha via Guix-patches via From: Sughosha Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches From: Sughosha * gnu/home/services/sound.scm (home-pipewire-service-type): New variable. --- gnu/home/services/sound.scm | 90 ++++++++++++++++++++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/gnu/home/services/sound.scm b/gnu/home/services/sound.scm index 22c1a99250..16bfe92f2f 100644 --- a/gnu/home/services/sound.scm +++ b/gnu/home/services/sound.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2023 Ludovic Courtès +;;; Copyright © 2023 Sughosha ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,14 +19,20 @@ (define-module (gnu home services sound) #:use-module (gnu home services) + #:use-module (gnu home services desktop) #:use-module (gnu home services shepherd) + #:use-module (gnu packages linux) + #:use-module (gnu packages pulseaudio) + #:use-module (guix packages) #:use-module (guix records) #:use-module (guix gexp) #:use-module (srfi srfi-1) #:use-module (ice-9 match) #:export (home-pulseaudio-rtp-sink-service-type home-pulseaudio-rtp-source-service-type - %pulseaudio-rtp-multicast-address)) + %pulseaudio-rtp-multicast-address + + home-pipewire-service-type)) ;;; @@ -149,3 +156,84 @@ (define home-pulseaudio-rtp-source-service-type "Define a PulseAudio source to receive audio broadcasted over RTP by another PulseAudio instance.") (default-value %pulseaudio-rtp-multicast-address))) + +;;; +;;; PipeWire support. +;;; + +(define (home-pipewire-files-service config) + `((".asoundrc" + ,(mixed-text-file + "asoundrc" + #~(string-append + "<" + #$(file-append + pipewire + "/share/alsa/alsa.conf.d/50-pipewire.conf") + ">\n<" + #$(file-append + pipewire + "/share/alsa/alsa.conf.d/99-pipewire-default.conf") + ">\n" + " +pcm_type.pipewire { + lib " #$(file-append + pipewire + "/lib/alsa-lib/libasound_module_pcm_pipewire.so") " +} + +ctl_type.pipewire { + lib " #$(file-append + pipewire + "/lib/alsa-lib/libasound_module_ctl_pipewire.so") " +}\n +defaults.pcm.card 2\n +defaults.ctl.card 2"))))) + +(define (home-pipewire-shepherd-service config) + (list + (shepherd-service + (requirement '(dbus)) + (provision '(pipewire)) + (stop #~(make-kill-destructor)) + (start #~(make-forkexec-constructor + (list #$(file-append pipewire "/bin/pipewire"))))) + (shepherd-service + (requirement '(pipewire)) + (provision '(wireplumber)) + (stop #~(make-kill-destructor)) + (start #~(make-forkexec-constructor + (list #$(file-append wireplumber "/bin/wireplumber"))))) + #; + (shepherd-service + (requirement '(pipewire)) + (provision '(pipewire-media-session)) + (stop #~(make-kill-destructor)) + (start #~(make-forkexec-constructor + (list + #$(file-append + pipewire-media-session + "/bin/pipewire-media-session") + "-c" + #$(file-append + pipewire-media-session + "/share/pipewire/media-session.d/media-session.conf"))))) + (shepherd-service + (requirement '(pipewire)) + (provision '(pipewire-pulse)) + (stop #~(make-kill-destructor)) + (start #~(make-forkexec-constructor + (list #$(file-append pipewire "/bin/pipewire-pulse"))))))) + +(define home-pipewire-service-type + (service-type + (name 'home-pipewire) + (extensions + (list (service-extension home-files-service-type + home-pipewire-files-service) + (service-extension home-shepherd-service-type + home-pipewire-shepherd-service) + (service-extension home-profile-service-type + (const (list pipewire pulseaudio))))) + (default-value '()) + (description "Configure PipeWire sound support.")))