From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id +KJPLmp5rGO0QgEAbAwnHQ (envelope-from ) for ; Wed, 28 Dec 2022 18:14:18 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id KGVYLmp5rGMcSQEA9RJhRA (envelope-from ) for ; Wed, 28 Dec 2022 18:14:18 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 4F9923556C for ; Wed, 28 Dec 2022 18:14:18 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pAa0D-0000vG-DV; Wed, 28 Dec 2022 12:14:05 -0500 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 1pAa0B-0000rc-0e for bug-guix@gnu.org; Wed, 28 Dec 2022 12:14:03 -0500 Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pAa0A-0003dp-OL for bug-guix@gnu.org; Wed, 28 Dec 2022 12:14:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pAa0A-0000YX-J3 for bug-guix@gnu.org; Wed, 28 Dec 2022 12:14:02 -0500 X-Loop: help-debbugs@gnu.org Subject: bug#60383: Pulseaudio does not source 'extra-script'files' from pulseaudio-configuration Resent-From: mirai Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Wed, 28 Dec 2022 17:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 60383 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: 60383@debbugs.gnu.org X-Debbugs-Original-To: bug-guix Received: via spool by submit@debbugs.gnu.org id=B.16722476012064 (code B ref -1); Wed, 28 Dec 2022 17:14:02 +0000 Received: (at submit) by debbugs.gnu.org; 28 Dec 2022 17:13:21 +0000 Received: from localhost ([127.0.0.1]:58516 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pAZzU-0000XD-CA for submit@debbugs.gnu.org; Wed, 28 Dec 2022 12:13:20 -0500 Received: from lists.gnu.org ([209.51.188.17]:54740) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pAZzR-0000X4-Vd for submit@debbugs.gnu.org; Wed, 28 Dec 2022 12:13:18 -0500 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 1pAZzR-0000i9-O3 for bug-guix@gnu.org; Wed, 28 Dec 2022 12:13:17 -0500 Received: from smtpm5.myservices.hosting ([185.26.105.236]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pAZzN-0003Kk-Ew for bug-guix@gnu.org; Wed, 28 Dec 2022 12:13:17 -0500 Received: from mail1.netim.hosting (unknown [185.26.106.172]) by smtpm5.myservices.hosting (Postfix) with ESMTP id 940E820C3F for ; Wed, 28 Dec 2022 18:13:08 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by mail1.netim.hosting (Postfix) with ESMTP id 2EB9580096 for ; Wed, 28 Dec 2022 18:13:08 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at mail1.netim.hosting Received: from mail1.netim.hosting ([127.0.0.1]) by localhost (mail1-1.netim.hosting [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id wYlfu8cLiO-u for ; Wed, 28 Dec 2022 18:13:02 +0100 (CET) Received: from [192.168.1.239] (unknown [10.192.1.83]) (Authenticated sender: lumen@makinata.eu) by mail1.netim.hosting (Postfix) with ESMTPSA id 4809D80093 for ; Wed, 28 Dec 2022 18:13:02 +0100 (CET) Message-ID: <892773bb-039b-c28f-a54b-35f70ebac471@makinata.eu> Date: Wed, 28 Dec 2022 17:13:01 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Content-Language: en-US From: mirai Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Received-SPF: pass client-ip=185.26.105.236; envelope-from=mirai@makinata.eu; helo=smtpm5.myservices.hosting X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 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: bug-guix@gnu.org List-Id: Bug reports for GNU Guix List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guix-bounces+larch=yhetil.org@gnu.org Sender: bug-guix-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1672247658; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=KxJTTJLis4q2p/Q94QL40s/FGaI/t8xNGwPsZ4hyKNM=; b=sRRybsm5G9NvNJOU7sxb1FZWFHLb/lAc4thcKjf3KeTO14HiR97Qzo8cJBJsW9Erxv26oI R9QSKUKki6YBtA6ScUvnu6+JmSx+Q+59AGaDkpIxN2oemb6+YwXQt57rDNk/n7ekYKFFdS ulFldbmCR/dn8aa3kiQlaT6kwM6lND0sWQLpsTqwBNnIo2LiweSMz5wYcQN/InTojFT1RH vU/XgpTH0xditNcy6n/rgTgdjH/wfHPj2mZS/GZN5n+zRw3i9pZBYQYN1r3os/+Op3tZaq mF9Cu057dc3+9gvHo1hxs948OFmNTgUV1Oi/tJyvs8aIPn+2eBHgub6xa4m76g== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org"; dmarc=none ARC-Seal: i=1; s=key1; d=yhetil.org; t=1672247658; a=rsa-sha256; cv=none; b=fDgh1cmmHxI9AEprKbn+lnwF2OnX1Sa9nUp2EXiM6Hy1OvuRkSE31QBN1gjtHlgcocZPF7 NcrQL3LVJgmhlO0IkHeL0kO2k4pGe7riixVl1I56NiIxg0SZE9t/aJ4HDJvhcVogrejTu9 VP/AvRqyDvD2YsetJdgnGvnRH7noszcNlc0fUgp0bDMn9Mmysu3fjuH5HGWL1BGSI3wj2m ksoC1lUOhp5EA+4MWqjaM4KHnptlxCLFqGT4iHMWdVw/lfmR2q9WUWLeea3JeQZnhAbg0K wQ81o/37D+t+NisP5gPA4Kqrx+eXzKvbCf+WJ2RacOuC1/fV2nFsrg5HVGwCZA== X-Spam-Score: -1.73 X-Migadu-Queue-Id: 4F9923556C Authentication-Results: aspmx1.migadu.com; dkim=none; spf=pass (aspmx1.migadu.com: domain of "bug-guix-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="bug-guix-bounces+larch=yhetil.org@gnu.org"; dmarc=none X-Migadu-Scanner: scn1.migadu.com X-Migadu-Spam-Score: -1.73 X-TUID: J723ZqnalnG6 Pulseaudio ignores any files under /etc/pulse/default.pa.d/ even though according to /etc/pulse/default.pa this shouldn't be the case: --8<---------------cut here---------------start------------->8--- $ cat /etc/pulse/default.pa #!/gnu/store/5nfmdrmm6zp4c3a5g5w5gwp7z39dr09n-pulseaudio-15.0/bin/pulseaudio -nF # # This file is part of PulseAudio. # # PulseAudio is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # PulseAudio 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 Lesser General Public License # along with PulseAudio; if not, see . # This startup script is used only if PulseAudio is started per-user # (i.e. not in system mode) .fail ### Automatically restore the volume of streams and devices load-module module-device-restore load-module module-stream-restore load-module module-card-restore ### Automatically augment property information from .desktop files ### stored in /usr/share/application load-module module-augment-properties ### Should be after module-*-restore but before module-*-detect load-module module-switch-on-port-available ### Load audio drivers statically ### (it's probably better to not load these drivers manually, but instead ### use module-udev-detect -- see below -- for doing this automatically) #load-module module-alsa-sink #load-module module-alsa-source device=hw:1,0 #load-module module-null-sink #load-module module-pipe-sink ### Automatically load driver modules depending on the hardware available .ifexists module-udev-detect.so load-module module-udev-detect .else ### Use the static hardware detection module (for systems that lack udev support) load-module module-detect .endif ### Automatically connect sink and source if JACK server is present .ifexists module-jackdbus-detect.so .nofail load-module module-jackdbus-detect channels=2 .fail .endif ### Automatically load driver modules for Bluetooth hardware .ifexists module-bluetooth-policy.so load-module module-bluetooth-policy .endif .ifexists module-bluetooth-discover.so load-module module-bluetooth-discover .endif ### Load several protocols .ifexists module-esound-protocol-unix.so load-module module-esound-protocol-unix .endif load-module module-native-protocol-unix ### Network access (may be configured with paprefs, so leave this commented ### here if you plan to use paprefs) #load-module module-esound-protocol-tcp #load-module module-native-protocol-tcp #load-module module-zeroconf-publish ### Load the RTP receiver module (also configured via paprefs, see above) #load-module module-rtp-recv ### Load the RTP sender module (also configured via paprefs, see above) #load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'" #load-module module-rtp-send source=rtp.monitor ### Automatically restore the default sink/source when changed by the user ### during runtime ### NOTE: This should be loaded as early as possible so that subsequent modules ### that look up the default sink/source get the right value load-module module-default-device-restore ### Make sure we always have a sink around, even if it is a null sink. load-module module-always-sink ### Honour intended role device property load-module module-intended-roles ### Automatically suspend sinks/sources that become idle for too long load-module module-suspend-on-idle ### If autoexit on idle is enabled we want to make sure we only quit ### when no local session needs us anymore. .ifexists module-console-kit.so #load-module module-console-kit .endif .ifexists module-systemd-login.so load-module module-systemd-login .endif ### Enable positioned event sounds load-module module-position-event-sounds ### Cork music/video streams when a phone stream is active load-module module-role-cork ### Modules to allow autoloading of filters (such as echo cancellation) ### on demand. module-filter-heuristics tries to determine what filters ### make sense, and module-filter-apply does the heavy-lifting of ### loading modules and rerouting streams. load-module module-filter-heuristics load-module module-filter-apply ### Make some devices default #set-default-sink output #set-default-source input ### Allow including a default.pa.d directory, which if present, can be used ### for additional configuration snippets. .nofail .include /gnu/store/5nfmdrmm6zp4c3a5g5w5gwp7z39dr09n-pulseaudio-15.0/etc/pulse/default.pa.d ### Added by Guix to include scripts specified in extra-script-files. .nofail .include /etc/pulse/default.pa.d --8<---------------cut here---------------end--------------->8--- >From the snippet above, it can be seen that: 1. The directory /etc/pulse/default.pa.d should be sourced as the file ends with: --8<---------------cut here---------------start------------->8--- ### Added by Guix to include scripts specified in extra-script-files. .nofail .include /etc/pulse/default.pa.d --8<---------------cut here---------------end--------------->8--- Performing a `pulseaudio --dump-conf' reveals that: --8<---------------cut here---------------start------------->8--- $ pulseaudio --dump-conf ### Read from configuration file: /etc/pulse/daemon.conf ### daemonize = no fail = yes high-priority = yes nice-level = -11 realtime-scheduling = yes realtime-priority = 5 allow-module-loading = yes allow-exit = yes use-pid-file = yes system-instance = no local-server-type = user cpu-limit = no enable-shm = yes flat-volumes = no rescue-streams = yes lock-memory = no exit-idle-time = 20 scache-idle-time = 20 dl-search-path = /gnu/store/5nfmdrmm6zp4c3a5g5w5gwp7z39dr09n-pulseaudio-15.0/lib/pulse-15.0/modules default-script-file = /gnu/store/5nfmdrmm6zp4c3a5g5w5gwp7z39dr09n-pulseaudio-15.0/etc/pulse/default.pa load-default-script-file = yes log-target = log-level = notice resample-method = auto avoid-resampling = no enable-remixing = yes remixing-use-all-sink-channels = yes remixing-produce-lfe = no remixing-consume-lfe = no lfe-crossover-freq = 0 default-sample-format = s16le default-sample-rate = 44100 alternate-sample-rate = 48000 default-sample-channels = 2 default-channel-map = front-left,front-right default-fragments = 4 default-fragment-size-msec = 25 enable-deferred-volume = yes deferred-volume-safety-margin-usec = 8000 deferred-volume-extra-delay-usec = 0 shm-size-bytes = 0 log-meta = no log-time = no log-backtrace = 0 rlimit-fsize = -1 rlimit-data = -1 rlimit-stack = -1 rlimit-core = -1 rlimit-rss = -1 rlimit-as = -1 rlimit-nproc = -1 rlimit-nofile = 256 rlimit-memlock = -1 rlimit-locks = -1 rlimit-sigpending = -1 rlimit-msgqueue = -1 rlimit-nice = 31 rlimit-rtprio = 9 rlimit-rttime = 200000 --8<---------------cut here---------------end--------------->8--- The default.pa script that is read is __not__ the one under /etc/pulse/default.pa but the one that comes with pulseaudio package located in /gnu/store which does not contain the line to load /etc/pulse/default.pa.d/ directory. This can be confirmed as the following pactl command outputs shouldn't be empty when used with the configuration snippet below: --8<---------------cut here---------------start------------->8--- $ pactl list modules | grep rtp $ pactl list source-outputs $ env | grep PULSE PULSE_CLIENTCONFIG=/etc/pulse/client.conf PULSE_CONFIG=/etc/pulse/daemon.conf --8<---------------cut here---------------end--------------->8--- Snippet from config.scm: --8<---------------cut here---------------start------------->8--- (modify-services %desktop-services (pulseaudio-service-type config => (pulseaudio-configuration (inherit config) (extra-script-files (list (plain-file "rtp.pa" (string-join (list "load-module module-null-sink sink_name=rtp" "load-module module-rtp-send source=rtp.monitor" "set-default-sink rtp") "\n" 'suffix))))))))) --8<---------------cut here---------------end--------------->8---