From unknown Sat Sep 06 20:53:51 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#52470] [PATCH] services: bluetooth: Add missing config parameters Resent-From: Demis Balbach Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 13 Dec 2021 19:21:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 52470 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 52470@debbugs.gnu.org Cc: Demis Balbach X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.16394232629790 (code B ref -1); Mon, 13 Dec 2021 19:21:02 +0000 Received: (at submit) by debbugs.gnu.org; 13 Dec 2021 19:21:02 +0000 Received: from localhost ([127.0.0.1]:56861 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mwqsf-0002Xn-0I for submit@debbugs.gnu.org; Mon, 13 Dec 2021 14:21:01 -0500 Received: from lists.gnu.org ([209.51.188.17]:55802) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mwqsc-0002Xb-3z for submit@debbugs.gnu.org; Mon, 13 Dec 2021 14:20:59 -0500 Received: from eggs.gnu.org ([209.51.188.92]:35196) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mwqsb-0007fm-VY for guix-patches@gnu.org; Mon, 13 Dec 2021 14:20:57 -0500 Received: from mout-p-202.mailbox.org ([80.241.56.172]:32574) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_CHACHA20_POLY1305:256) (Exim 4.90_1) (envelope-from ) id 1mwqsY-0005vh-R8 for guix-patches@gnu.org; Mon, 13 Dec 2021 14:20:57 -0500 Received: from smtp102.mailbox.org (smtp102.mailbox.org [IPv6:2001:67c:2050:105:465:1:3:0]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-202.mailbox.org (Postfix) with ESMTPS id 4JCWZ251z0zQkhL; Mon, 13 Dec 2021 20:20:42 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minikn.xyz; s=MBO0001; t=1639423240; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=Wj3L+kqMflTTCUqGnsN494XeV4BxXiGhPF5YhWZzh24=; b=K0kNsFVOPNSmpKqtnswAIuSUEy7IHGEi2mxTerk3gpIWNyh5Ywif61Xs+KBzSFWRMft98s /Hh3T6JAQAbQn+hA7UYMsiKFNSuUrdvAp6yKYNx0KKUOR+kUP34k1X3WLM5UON9X95Oqq4 LXfT7g2PqAHPVB8DazXheIXD+6SEtt6Kjm9O4kDfIaCsTAUpYnguAIOYpMon3bUH7Uip4w sF/R/NibowMLsHKAG/x5FDxksQlmNCeAiG1paFgfVtVuVkDUVEaijlFIXU2d3yxUkR6EUy 15wGP3gaF19rCNhR+ib5CnpBt1MtAyeoBJSXjQUZoGe7H2sg4gKOQkD83K3K+w== From: Demis Balbach Date: Mon, 13 Dec 2021 20:20:14 +0100 Message-Id: <20211213192014.8386-1-db@minikn.xyz> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: none client-ip=80.241.56.172; envelope-from=db@minikn.xyz; helo=mout-p-202.mailbox.org X-Spam_score_int: 0 X-Spam_score: -0.0 X-Spam_bar: / X-Spam_report: (-0.0 / 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, FROM_SUSPICIOUS_NTLD=0.498, FROM_SUSPICIOUS_NTLD_FP=0.294, PDS_OTHER_BAD_TLD=1.997, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) --- gnu/services/desktop.scm | 332 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 328 insertions(+), 4 deletions(-) diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 64d0e85301..23b730d7d4 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -402,14 +402,338 @@ (define-record-type* bluetooth-configuration make-bluetooth-configuration bluetooth-configuration? (bluez bluetooth-configuration-bluez (default bluez)) - (auto-enable? bluetooth-configuration-auto-enable? (default #f))) + + ;;; [General] + (name bluetooth-configuration-name (default "BlueZ")) + (class bluetooth-configuration-class (default "0x000000")) + (discoverable-timeout + bluetooth-configuration-discoverable-timeout (default 180)) + (always-pairable? bluetooth-configuration-always-pairable? (default #f)) + (pairable-timeout bluetooth-configuration-pairable-timeout (default 0)) + (device-id bluetooth-configuration-device-id (default "")) + (reverse-service-discovery? + bluetooth-configuration-reverse-service-discovery (default #t)) + (name-resolving? bluetooth-configuration-name-resolving? (default #t)) + (debug-keys? bluetooth-configuration-debug-keys? (default #f)) + + ;;; Possible values: + ;;; 'dual, 'bredr, 'le + (controller-mode bluetooth-configuration-controller-mode (default 'dual)) + + ;;; Possible values: + ;;; 'off, 'single, 'multiple + (multi-profile bluetooth-configuration-multi-profile (default 'off)) + (fast-connectable? bluetooth-configuration-fast-connectable? (default #f)) + + ;;; Possible values: + ;;; for LE mode: 'off, 'network/on, 'device + ;;; for Dual mode: 'off, 'network/on', 'device, 'limited-network, 'limited-device + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n68 + (privacy bluetooth-configuration-privacy (default 'off)) + + ;;; Possible values: + ;;; 'never, 'confirm, 'always + (just-works-repairing + bluetooth-configuration-just-works-repairing (default 'never)) + (temporary-timeout bluetooth-configuration-temporary-timeout (default 30)) + (refresh-discovery? bluetooth-configuration-refresh-discovery (default #t)) + + ;;; Possible values: 'true, 'false, + ;;; Possible UUIDs: + ;;; d4992530-b9ec-469f-ab01-6c481c47da1c (BlueZ Experimental Debug) + ;;; 671b10b5-42c0-4696-9227-eb28d1b049d6 (BlueZ Experimental Simultaneous Central and Peripheral) + ;;; 15c0a148-c273-11ea-b3de-0242ac130004 (BlueZ Experimental LL privacy) + ;;; 330859bc-7506-492d-9370-9a6f0614037f (BlueZ Experimental Bluetooth Quality Report) + ;;; a6695ace-ee7f-4fb9-881a-5fac66c629af (BlueZ Experimental Offload Codecs) + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n110 + (experimental bluetooth-configuration-experimental (default 'false)) + (remote-name-request-retry-delay + bluetooth-configuration-remote-name-request-retry-delay (default 300)) + + ;;; [BR] + (page-scan-type bluetooth-configuration-page-scan-type (default -1)) + (page-scan-interval bluetooth-configuration-page-scan-interval (default -1)) + (page-scan-window bluetooth-configuration-page-scan-window (default 'nil)) + (inquiry-scan-type bluetooth-configuration-inquiry-scan-type (default 'nil)) + (inquiry-scan-interval bluetooth-configuration-inquiry-scan-interval (default -1)) + (inquiry-scan-window bluetooth-configuration-inquiry-scan-window (default 'nil)) + (link-supervision-timeout bluetooth-configuration-link-supervision-timeout (default -1)) + (page-timeout bluetooth-configuration-page-timeout (default -1)) + (min-sniff-interval bluetooth-configuration-min-sniff-interval (default -1)) + (max-sniff-interval bluetooth-configuration-max-sniff-interval (default -1)) + + ;;; [LE] + (min-advertisement-interval + bluetooth-configuration-min-advertisement-interval (default -1)) + (max-advertisement-interval + bluetooth-configuration-max-advertisement-interval (default -1)) + (multi-advertisement-rotation-interval + bluetooth-configuration-multi-advertisement-rotation-interval (default -1)) + (scan-interval-auto-connect + bluetooth-configuration-scan-interval-auto-connect (default 'nil)) + (scan-window-auto-connect + bluetooth-configuration-scan-window-auto-connect (default 'nil)) + (scan-interval-suspend + bluetooth-configuration-scan-interval-suspend (default 'nil)) + (scan-window-suspend + bluetooth-configuration-scan-window-suspend (default 'nil)) + (scan-interval-discovery + bluetooth-configuration-scan-interval-discovery (default 'nil)) + (scan-window-discovery + bluetooth-configuration-scan-window-discovery (default 'nil)) + (scan-interval-adv-monitor + bluetooth-configuration-scan-interval-adv-monitor (default 'nil)) + (scan-window-adv-monitor + bluetooth-configuration-scan-window-adv-monitor (default 'nil)) + (scan-interval-connect + bluetooth-configuration-scan-interval-connect (default 'nil)) + (scan-window-connect + bluetooth-configuration-scan-window-connect (default 'nil)) + (min-connection-interval + bluetooth-configuration-min-connection-interval (default -1)) + (max-connection-interval + bluetooth-configuration-max-connection-interval (default -1)) + (connection-latency + bluetooth-configuration-connection-latency (default -1)) + (connection-supervision-timeout + bluetooth-configuration-connection-supervision-timeout (default -1)) + (autoconnect-timeout + bluetooth-configuration-autoconnect-timeout (default -1)) + (adv-mon-allowlist-scan-duration + bluetooth-configuration-adv-mon-allowlist-scan-duration (default 300)) + (adv-mon-no-filter-scan-duration + bluetooth-configuration-adv-mon-no-filter-scan-duration (default 500)) + (enable-adv-mon-interleave-scan + bluetooth-configuration-enable-adv-mon-interleave-scan (default 1)) + + ;;; [GATT] + ;;; Possible values: 'yes, 'no, 'always + (cache bluetooth-configuration-cache (default 'always)) + + ;;; Possible values: 7 ... 16, 0 (don't care) + (key-size bluetooth-configuration-key-size (default 0)) + + ;;; Possible values: 23 ... 517 + (exchange-mtu bluetooth-configuration-exchange-mtu (default 517)) + + ;;; Possible values: 1 ... 5 + (att-channels bluetooth-configuration-att-channels (default 3)) + + ;;; [AVDTP] + ;;; Possible values: 'basic, 'ertm + (session-mode bluetooth-configuration-session-mode (default 'basic)) + + ;;; Possible values: 'basic, 'streaming + (stream-mode bluetooth-configuration-stream-mode (default 'basic)) + + ;;; [Policy] + (reconnect-uuids bluetooth-configuration-reconnect-uuids (default '())) + (reconnect-attempts bluetooth-configuration-reconnect-attempts (default 7)) + (reconnect-intervals bluetooth-configuration-reconnect-intervals + (default (list 1 2 4 8 16 32 64))) + (auto-enable? bluetooth-configuration-auto-enable? (default #f)) + (resume-delay bluetooth-configuration-resume-delay (default 2)) + + ;;; [AdvMon] + ;;; Possible values: + ;;; "0x00", "0xFF", + ;;; "N = 0x00" ... "N = 0xFF" + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n286 + (rssi-sampling-period bluetooth-configuration-rssi-sampling-period + (default "0xFF"))) (define (bluetooth-configuration-file config) "Return a configuration file for the systemd bluetooth service, as a string." (string-append - "[Policy]\n" - "AutoEnable=" (bool (bluetooth-configuration-auto-enable? - config)))) + "[General]" + "\nName = " (bluetooth-configuration-name config) + "\nClass = " (bluetooth-configuration-class config) + "\nDiscoverableTimeout = " (number->string + (bluetooth-configuration-discoverable-timeout + config)) + "\nAlwaysPairable = " (bool (bluetooth-configuration-always-pairable? + config)) + "\nPairableTimeout = " (number->string + (bluetooth-configuration-pairable-timeout + config)) + (if (not (string-null? (bluetooth-configuration-device-id config))) + (string-append "\nDeviceID = " (bluetooth-configuration-device-id config)) + "") + "\nReverseServiceDiscovery = " (bool + (bluetooth-configuration-reverse-service-discovery + config)) + "\nNameResolving = " (bool (bluetooth-configuration-name-resolving? config)) + "\nDebugKeys = " (bool (bluetooth-configuration-debug-keys? config)) + "\nControllerMode = " (symbol->string + (bluetooth-configuration-controller-mode config)) + "\nMultiProfile = " (symbol->string (bluetooth-configuration-multi-profile + config)) + "\nFastConnectable = " (bool (bluetooth-configuration-fast-connectable? config)) + "\nPrivacy = " (symbol->string (bluetooth-configuration-privacy config)) + "\nJustWorksRepairing = " (symbol->string + (bluetooth-configuration-just-works-repairing config)) + "\nTemporaryTimeout = " (number->string + (bluetooth-configuration-temporary-timeout config)) + "\nRefreshDiscovery = " (bool (bluetooth-configuration-refresh-discovery config)) + "\nExperimental = " (symbol->string (bluetooth-configuration-experimental config)) + "\nRemoteNameRequestRetryDelay = " (number->string + (bluetooth-configuration-remote-name-request-retry-delay + config)) + "\n[BR]" + (if (not (eq? -1 (bluetooth-configuration-page-scan-type config))) + (string-append + "\nPageScanType = " + (number->string (bluetooth-configuration-page-scan-type config))) "") + (if (not (eq? -1 (bluetooth-configuration-page-scan-interval config))) + (string-append + "\nPageScanInterval = " + (number->string (bluetooth-configuration-page-scan-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-page-scan-window config))) + (string-append + "\nPageScanWindow = " + (number->string (bluetooth-configuration-page-scan-window config))) "") + (if (not (eq? -1 (bluetooth-configuration-inquiry-scan-type config))) + (string-append + "\nInquiryScanType = " + (number->string (bluetooth-configuration-inquiry-scan-type config))) "") + (if (not (eq? -1 (bluetooth-configuration-inquiry-scan-interval config))) + (string-append + "\nInquiryScanInterval = " + (number->string (bluetooth-configuration-inquiry-scan-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-inquiry-scan-window config))) + (string-append + "\nInquiryScanWindow = " + (number->string (bluetooth-configuration-inquiry-scan-window config))) "") + (if (not (eq? -1 (bluetooth-configuration-link-supervision-timeout config))) + (string-append + "\nLinkSupervisionTimeout = " + (number->string (bluetooth-configuration-link-supervision-timeout config))) "") + (if (not (eq? -1 (bluetooth-configuration-page-timeout config))) + (string-append + "\nPageTimeout = " + (number->string (bluetooth-configuration-page-timeout config))) "") + (if (not (eq? -1 (bluetooth-configuration-min-sniff-interval config))) + (string-append + "\nMinSniffInterval = " + (number->string (bluetooth-configuration-min-sniff-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-max-sniff-interval config))) + (string-append + "\nMaxSniffInterval = " + (number->string (bluetooth-configuration-max-sniff-interval config))) "") + + "\n[LE]" + (if (not (eq? -1 (bluetooth-configuration-min-advertisement-interval config))) + (string-append + "\nMinAdvertisementInterval = " + (number->string (bluetooth-configuration-min-advertisement-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-max-advertisement-interval config))) + (string-append + "\nMaxAdvertisementInterval = " + (number->string (bluetooth-configuration-max-advertisement-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-multi-advertisement-rotation-interval config))) + (string-append + "\nMultiAdvertisementRotationInterval = " + (number->string + (bluetooth-configuration-multi-advertisement-rotation-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-auto-connect config))) + (string-append + "\nScanIntervalAutoConnect = " + (number->string (bluetooth-configuration-scan-interval-auto-connect config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-auto-connect config))) + (string-append + "\nScanWindowAutoConnect = " + (number->string (bluetooth-configuration-scan-window-auto-connect config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-suspend config))) + (string-append + "\nScanIntervalSuspend = " + (number->string (bluetooth-configuration-scan-interval-suspend config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-suspend config))) + (string-append + "\nScanWindowSuspend = " + (number->string (bluetooth-configuration-scan-window-suspend config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-discovery config))) + (string-append + "\nScanIntervalDiscovery = " + (number->string (bluetooth-configuration-scan-interval-discovery config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-discovery config))) + (string-append + "\nScanWindowDiscovery = " + (number->string (bluetooth-configuration-scan-window-discovery config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-adv-monitor config))) + (string-append + "\nScanIntervalAdvMonitor = " + (number->string (bluetooth-configuration-scan-interval-adv-monitor config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-adv-monitor config))) + (string-append + "\nScanWindowAdvMonitor = " + (number->string (bluetooth-configuration-scan-window-adv-monitor config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-connect config))) + (string-append + "\nScanIntervalConnect = " + (number->string (bluetooth-configuration-scan-interval-connect config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-connect config))) + (string-append + "\nScanWindowConnect = " + (number->string (bluetooth-configuration-scan-window-connect config))) "") + (if (not (eq? -1 (bluetooth-configuration-min-connection-interval config))) + (string-append + "\nMinConnectionInterval = " + (number->string (bluetooth-configuration-min-connection-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-max-connection-interval config))) + (string-append + "\nMaxConnectionInterval = " + (number->string (bluetooth-configuration-max-connection-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-connection-latency config))) + (string-append + "\nConnectionLatency = " + (number->string (bluetooth-configuration-connection-latency config))) "") + (if (not (eq? -1 (bluetooth-configuration-connection-supervision-timeout config))) + (string-append + "\nConnectionSupervisionTimeout = " + (number->string (bluetooth-configuration-connection-supervision-timeout config))) "") + (if (not (eq? -1 (bluetooth-configuration-autoconnect-timeout config))) + (string-append + "\nAutoconnecttimeout = " + (number->string (bluetooth-configuration-autoconnect-timeout config))) "") + + "\nAdvMonAllowlistScanDuration = " (number->string + (bluetooth-configuration-adv-mon-allowlist-scan-duration + config)) + "\nAdvMonNoFilterScanDuration = " (number->string + (bluetooth-configuration-adv-mon-no-filter-scan-duration + config)) + "\nEnableAdvMonInterleaveScan = " (number->string + (bluetooth-configuration-enable-adv-mon-interleave-scan + config)) + + "\n[GATT]" + "\nCache = " (symbol->string (bluetooth-configuration-cache config)) + "\nKeySize = " (number->string (bluetooth-configuration-key-size config)) + "\nExchangeMTU = " (number->string (bluetooth-configuration-exchange-mtu config)) + "\nChannels = " (number->string (bluetooth-configuration-att-channels config)) + + "\n[AVDTP]" + "\nSessionMode = " (symbol->string (bluetooth-configuration-session-mode config)) + "\nStreamMode = " (symbol->string (bluetooth-configuration-stream-mode config)) + + "\n[Policy]" + (if (not (eq? '() (bluetooth-configuration-reconnect-uuids config))) + (string-append + "\nReconnectUUIDs = " + (string-join (bluetooth-configuration-reconnect-uuids config) ",")) "") + "\nReconnectAttempts = " (number->string + (bluetooth-configuration-reconnect-attempts config)) + "\nReconnectIntervals = " (string-join + (map number->string + (bluetooth-configuration-reconnect-intervals + config)) + ",") + "\nAutoEnable = " (bool (bluetooth-configuration-auto-enable? + config)) + "\nResumeDelay = " (number->string (bluetooth-configuration-resume-delay config)) + + "\n[AdvMon]" + "\nRSSISamplingPeriod = " (bluetooth-configuration-rssi-sampling-period config))) (define (bluetooth-directory config) (computed-file "etc-bluetooth" -- 2.34.0 From unknown Sat Sep 06 20:53:51 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#52470] [PATCH] services: bluetooth: Add missing config parameters References: <20211213192014.8386-1-db@minikn.xyz> In-Reply-To: <20211213192014.8386-1-db@minikn.xyz> Resent-From: Demis Balbach Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 13 Dec 2021 19:37:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 52470 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 52470@debbugs.gnu.org Received: via spool by 52470-submit@debbugs.gnu.org id=B52470.163942421011258 (code B ref 52470); Mon, 13 Dec 2021 19:37:01 +0000 Received: (at 52470) by debbugs.gnu.org; 13 Dec 2021 19:36:50 +0000 Received: from localhost ([127.0.0.1]:56877 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mwr7y-0002vW-EK for submit@debbugs.gnu.org; Mon, 13 Dec 2021 14:36:50 -0500 Received: from mout-p-102.mailbox.org ([80.241.56.152]:56702) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mwr7t-0002vB-0r for 52470@debbugs.gnu.org; Mon, 13 Dec 2021 14:36:49 -0500 Received: from smtp102.mailbox.org (smtp102.mailbox.org [IPv6:2001:67c:2050:105:465:1:3:0]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4JCWwQ1GG1zQjDq for <52470@debbugs.gnu.org>; Mon, 13 Dec 2021 20:36:38 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minikn.xyz; s=MBO0001; t=1639424196; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=/2bdzl8Z2saXRhq+XnXVUo1ksHfq/3x9ZMaVQXmmyZU=; b=JDeOA0NdJlAohHPHk4aiKy64zZFXdWaiSJgnekOFc48KVwBJm+3DVMdgX2Iug932huU5r3 d+hsOsskeBmq9q3GT9ZxERc9se5pXwpGSejc5OyR7g2/EaVO5XQ6dOAt8Q8z/qoNgj2zU5 XC5aa9WLdkQ92vKbCtnrL8IRudTCyQSJU2obRxNpsPP2vnQvuuEM4G8/vc/py3w93rmSqe xKUEvGmLwLGFP3DpXPuHjz/lCnIugLziS/UdYZp4sc8gHeEf2vgelMSAuXW8dSsF0FfUlU XOi3/euv0Ui5SotsgVYOA9FbQMAC9U+wwkFqVquCSi3MxppdqRR2BsWr8A9I1A== From: Demis Balbach Date: Mon, 13 Dec 2021 20:36:32 +0100 Message-ID: <87bl1kthz3.fsf@minikn.xyz> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: 2.3 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Hello, this patch adds all (as far as I know) missing config parameters to the bluetooth-service. I added all config parameters (that were missing) that are defined in https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf Content analysis details: (2.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [80.241.56.152 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [80.241.56.152 listed in wl.mailspike.net] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: minikn.xyz (xyz)] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.5 FROM_SUSPICIOUS_NTLD_FP From abused NTLD 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.8 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Hello, this patch adds all (as far as I know) missing config parameters to the bluetooth-service. I added all config parameters (that were missing) that are defined in https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf Content analysis details: (1.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [80.241.56.152 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [80.241.56.152 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: minikn.xyz (xyz)] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD 1.0 BULK_RE_SUSP_NTLD Precedence bulk and RE: from a suspicious TLD -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello, this patch adds all (as far as I know) missing config parameters to the bluetooth-service. I added all config parameters (that were missing) that are defined in https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf If a default value was given, e.g.: =2D-8<---------------cut here---------------start------------->8--- # Specify the policy to the JUST-WORKS repairing initiated by peer # Possible values: "never", "confirm", "always" # Defaults to "never" <------------------------------------------ #JustWorksRepairing =3D never =2D-8<---------------cut here---------------end--------------->8--- I used that default value. However, there are other paramaters (everthing under `[BR]' and almost everything under `[LE]') that don't specify default values. They are always integers as one can see here: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/btd.h#n39 So I took a nonsensical value like `-1' and only printed the in question with the user provided line if it did not equal -1. This approach isn't pretty, but it worked for me, however please give feedback regarding that. My guile-fu is bad so I'm sure there's plenty room for improvement. Here is the config I tested it with: =2D-8<---------------cut here---------------start------------->8--- (define-module (base-system) #:use-module (gnu) #:use-module (gnu services desktop) #:use-module (srfi srfi-1)) (define base-operating-system (operating-system ;; Machine settings (host-name "geekcave") (timezone "Europe/Berlin") (locale "en_US.utf8") (keyboard-layout (keyboard-layout "us" "altgr-intl")) ;; Services (services (append (list (service bluetooth-service-type (bluetooth-configurat= ion (name "test") (class "0x123") (discoverable-timeou= t 60) (always-pairable? #f) (pairable-timeout 20) (device-id "bluetoot= h:123") (reverse-service-dis= covery? #f) (name-resolving? #f) (debug-keys? #t) (controller-mode 'le) (multi-profile 'mult= iple) (fast-connectable? #= t) (privacy 'network/on) (just-works-repairin= g 'confirm) (temporary-timeout 1= 0) (refresh-discovery? = #f) (experimental 'd4992= 530-b9ec-469f-ab01-6c481c47da1c) (remote-name-request= -retry-delay 20) (page-scan-type #xFF= F) (page-scan-interval = #x0) (page-scan-window #x= 1) (inquiry-scan-type #= xFFFF) (inquiry-scan-interv= al #x123) (inquiry-scan-window= 23890) (link-supervision-ti= meout 13) (page-timeout 9) (min-sniff-interval = 0) (max-sniff-interval = 2) (min-advertisement-i= nterval 0) (max-advertisement-i= nterval 2) (multi-advertisement= -rotation-interval 3) (scan-interval-auto-= connect 0) (scan-window-auto-co= nnect 0) (scan-interval-suspe= nd 0) (scan-window-suspend= 0) (scan-interval-disco= very 0) (scan-window-discove= ry 0) (scan-interval-adv-m= onitor 0) (scan-window-adv-mon= itor 0) (scan-interval-conne= ct 0) (scan-window-connect= 0) (min-connection-inte= rval 0) (max-connection-inte= rval 1) (connection-latency = 10) (connection-supervis= ion-timeout 34) (autoconnect-timeout= 4) (adv-mon-allowlist-s= can-duration 20) (adv-mon-no-filter-s= can-duration 30) (enable-adv-mon-inte= rleave-scan 0) (cache 'yes) (key-size 15) (exchange-mtu 23) (att-channels 1) (session-mode 'ertm) (stream-mode 'stream= ing) (reconnect-uuids (li= st "")) (reconnect-attempts = 3) (reconnect-intervals= (list 2 4 49)) (auto-enable? #t) (resume-delay 29) (rssi-sampling-perio= d "0x10")))) %base-services)) ;; Boot loader (bootloader (bootloader-configuration (bootloader grub-efi-bootloader) (target "/boot/efi") (timeout 3))) ;; File systems (file-systems (cons* (file-system ;; System partition (device (file-system-label "GUIX")) (mount-point "/") (type "btrfs")) (file-system ;; Boot partition (device (file-system-label "BOOT")) (mount-point "/boot/efi") (type "vfat")) %base-file-systems)))) base-operating-system =2D-8<---------------cut here---------------end--------------->8--- =2D-=20 Best regards / Mit freundlichen Gr=C3=BC=C3=9Fen, Demis Balbach --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJCBAEBCgAsFiEEz9zHmXzCRksxyCGU8X3bmMw8QFwFAmG3oMAOHGRiQG1pbmlr bi54eXoACgkQ8X3bmMw8QFywlBAAolYphE1kmix39nGoRD1imbP01A59/4dh7sO6 8cn7DOwXQzwruDRLS9KMD4B60e/wTDNXnq4XDdi73SbN1P2+3vtJZ22lbYnCOfSP HAFPrIf0Zw+nQ6lUjmtqDrGsnSs9tSNxEkMtVi3F8TJfvqZxfGuE2oBpCyd8c6iu fvooKDN5B3mYnurO/O7mXIEOgnklUe2YVWSegO8Z0fP762f2XRtoy+NxJ20LWoSD ypSliKPTKaZHS+G0RxOBuyb1v2Ust8YGG80p7tvrZYikiU26XGRPXGoWYnpYy3jk 9Igej+vXur5ii98RWAYniK68PzhAOXGW4gB9FurVP0oJ/Mmb0zaIH6BISPXxxOsY 2lrf1W1afM/sQHl8HdKuxBNbBYyMC6RY5oLMZvKAeD0/7HOva0qWKTxz/jDxUBWi VEea1XW0OiEbgfmWvuzlO4C2qi8WYYkSSpJUCPvLsWCunQ90eSNqTncyFI0ARe0S fENSJdUaT8yo8ls7abCd4yHIR+8TsZCOiJP9hnye2JW2QmkO3j2VtknL/0JU52ZH 4EtvBksKE+WCxnIRAeSyRShoqjCDkLjf0nh2BtgJcemJK0NH9mrHw57yO2k/yh9X TCWs7zYOUYC1aPSUewr0tqE9UqFTB3gRrZNerc1V+/EJH+/9o6H3gNsCJyZLU/Vf V6c92QA= =gJ70 -----END PGP SIGNATURE----- --=-=-=-- From unknown Sat Sep 06 20:53:51 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#52470] [PATCH] services: bluetooth: Add missing config parameters Resent-From: Josselin Poiret Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 14 Dec 2021 13:04:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 52470 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Demis Balbach , 52470@debbugs.gnu.org Cc: dev@jpoiret.xyz Received: via spool by 52470-submit@debbugs.gnu.org id=B52470.16394870007007 (code B ref 52470); Tue, 14 Dec 2021 13:04:02 +0000 Received: (at 52470) by debbugs.gnu.org; 14 Dec 2021 13:03:20 +0000 Received: from localhost ([127.0.0.1]:57795 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mx7Sh-0001ox-Lv for submit@debbugs.gnu.org; Tue, 14 Dec 2021 08:03:19 -0500 Received: from jpoiret.xyz ([206.189.101.64]:43126) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mx7Sf-0001oo-E5 for 52470@debbugs.gnu.org; Tue, 14 Dec 2021 08:03:17 -0500 Received: from authenticated-user (jpoiret.xyz [206.189.101.64]) by jpoiret.xyz (Postfix) with ESMTPA id E2CEF184F5F; Tue, 14 Dec 2021 13:03:14 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jpoiret.xyz; s=dkim; t=1639486995; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=RIm15WuwkArg2RMCs40jl+6fkpIsR0kjG43S7qG+ZsI=; b=nK8i/kRS3qiZUOJetoNjh4hp8GioS+EqiAlRXIgoNVbi5mevqkWQXcqmXAHbju/AnaGFjR H+qd/5PDa0CCGVJwED5Jz75yxdLXda6GS/50okIhge9a8G/pilKgJW+ddTHjPDiGIE/OGF R4czAzLBw9d40QlzTpLr/MsvZ+7FT7kFOVViv4xktE6uVnqvNnb6miSPHjtvh8Rzkaaw+b F8TUvpz1lB+xD7vHtjDmQlB2doApeC/peengrC9NrlPtHXWxqeMBxFkQdObLiZk9DASDt5 oYWmuLgHUOgEkf2rwqGMzbLoZKu4SZyb3AXEBWx8pi46vT6Xn9iwIzaOpAL/Tw== From: Josselin Poiret In-Reply-To: <87bl1kthz3.fsf@minikn.xyz> References: <20211213192014.8386-1-db@minikn.xyz> <87bl1kthz3.fsf@minikn.xyz> Date: Tue, 14 Dec 2021 14:03:14 +0100 Message-ID: <87bl1jfiel.fsf@jpoiret.xyz> MIME-Version: 1.0 Content-Type: text/plain X-Spamd-Bar: / Authentication-Results: jpoiret.xyz; auth=pass smtp.auth=jpoiret@jpoiret.xyz smtp.mailfrom=dev@jpoiret.xyz X-Spam-Score: 2.5 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Hello, Demis Balbach writes: > Hello, > > this patch adds all (as far as I know) missing config parameters to > the bluetooth-service. Content analysis details: (2.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: jpoiret.xyz (xyz)] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.5 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Hello, Demis Balbach writes: > Hello, > > this patch adds all (as far as I know) missing config parameters to > the bluetooth-service. Content analysis details: (2.5 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: minikn.xyz (xyz)] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD 1.0 BULK_RE_SUSP_NTLD Precedence bulk and RE: from a suspicious TLD -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager Hello, Demis Balbach writes: > Hello, > > this patch adds all (as far as I know) missing config parameters to > the bluetooth-service. Nice work! > I used that default value. However, there are other paramaters > (everthing under `[BR]' and almost everything under `[LE]') that don't > specify default values. They are always integers as one can see here: > > https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/btd.h#n39 > > So I took a nonsensical value like `-1' and only printed the in > question with the user provided line if it did not equal -1. Since Guile isn't typed, the usual approach is to use `#f` for default values, and then use `(if (bluetooth-configuration-inquiry-scan-window config) ...)` for example. Any value other than #f will be considered as truthful for conditionals (see "(guile)Booleans"). > + (if (not (eq? -1 (bluetooth-configuration-page-scan-type config))) > + (string-append > + "\nPageScanType = " > + (number->string (bluetooth-configuration-page-scan-type config))) "") Small nitpick, I'd rather have `""`, the else part of this if syntax, on its own line, aligned with `(string-append`. Could you also document the `bluetooth-service-type` Scheme value in doc/guix.texi, as well as `bluetooth-configuration`, if that's not too much to ask? I only see one for `bluetooth-service` right now. I'm not sure if all configuration values should be documented there though, since there are a lot. By the way, shouldn't `bluetooth-service` be deprecated, given how simple it is to use the `-type` version? What do others think? Best, Josselin Poiret From unknown Sat Sep 06 20:53:51 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#52470] [PATCH] services: bluetooth: Add missing config parameters Resent-From: Demis Balbach Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 14 Dec 2021 14:52:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 52470 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Josselin Poiret , 52470@debbugs.gnu.org Cc: dev@jpoiret.xyz Received: via spool by 52470-submit@debbugs.gnu.org id=B52470.163949349916909 (code B ref 52470); Tue, 14 Dec 2021 14:52:02 +0000 Received: (at 52470) by debbugs.gnu.org; 14 Dec 2021 14:51:39 +0000 Received: from localhost ([127.0.0.1]:57912 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mx99X-0004Of-HW for submit@debbugs.gnu.org; Tue, 14 Dec 2021 09:51:39 -0500 Received: from mout-p-201.mailbox.org ([80.241.56.171]:19834) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mx99V-0004OR-Vs for 52470@debbugs.gnu.org; Tue, 14 Dec 2021 09:51:38 -0500 Received: from smtp2.mailbox.org (smtp2.mailbox.org [IPv6:2001:67c:2050:105:465:1:2:0]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4JD1Xz6VyZzQlZ1; Tue, 14 Dec 2021 15:51:31 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minikn.xyz; s=MBO0001; t=1639493489; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=qyMoIu73UUorUr42rwUMtYOYBdFZE5qDKQyYd5SvXTo=; b=gdYA0J8BiwfqHu9qVW75VtzogYt4LKrg45KwFx+zNqgfAe/6otTNGnFiVENsjXe1kMrRpN TDkWNLdoPl5XuAE6wiAfsF9dHO4x7J1oHl83fjF+cG1lkyP6AEz4RdGwYJP6idOFnx31Fi IMGF/Db/vpmTY212UjWqe3yzm6juqSMS0laCcesVrGcLetmbxhNTxbEO+ufjSC/i8xTpDT sBrPRJTPLWhH0at690VurjEyBBhF7pdakSpkJmig6GOniPIXxoSRSYyghckHPOyMC3KViU XRrZLVCbqgAyN0LLg3uH6hTCZ0YCwjQLriDaQbe3ZhRaU3aYlxSrvop/eze21A== From: Demis Balbach In-Reply-To: <87bl1jfiel.fsf@jpoiret.xyz> References: <20211213192014.8386-1-db@minikn.xyz> <87bl1kthz3.fsf@minikn.xyz> <87bl1jfiel.fsf@jpoiret.xyz> Date: Tue, 14 Dec 2021 15:51:26 +0100 Message-ID: <875yrrqlxt.fsf@minikn.xyz> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: 1.8 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On 2021-12-14 14:03, Josselin Poiret wrote: Hello, > Since Guile isn't typed, the usual approach is to use `#f` for default > values, and then use `(if (bluetooth-configuration-inquiry-scan-window > config) ...)` for example. Any value other than #f w [...] Content analysis details: (1.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [80.241.56.171 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: minikn.xyz (xyz)] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.8 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On 2021-12-14 14:03, Josselin Poiret wrote: Hello, > Since Guile isn't typed, the usual approach is to use `#f` for default > values, and then use `(if (bluetooth-configuration-inquiry-scan-window > config) ...)` for example. Any value other than #f w [...] Content analysis details: (1.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [80.241.56.171 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: minikn.xyz (xyz)] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD 1.0 BULK_RE_SUSP_NTLD Precedence bulk and RE: from a suspicious TLD -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 2021-12-14 14:03, Josselin Poiret wrote: Hello, > Since Guile isn't typed, the usual approach is to use `#f` for default > values, and then use `(if (bluetooth-configuration-inquiry-scan-window > config) ...)` for example. Any value other than #f will be considered > as truthful for conditionals (see "(guile)Booleans"). I tried that, and I could have sworn I got an error regarding the type. I was under the impression that the default values' type set the type for the whole field. But I was wrong of course because I tested your suggestion and it worked. > Small nitpick, I'd rather have `""`, the else part of this if syntax, on > its own line, aligned with `(string-append`. Please do nitpick. I appreciate it. I think the `[General]` part looks pretty messy indentation-wise, but I don't really know what layout to settle on. > Could you also document the `bluetooth-service-type` Scheme value in > doc/guix.texi, as well as `bluetooth-configuration`, if that's not too > much to ask? I only see one for `bluetooth-service` right now. I'm not > sure if all configuration values should be documented there though, > since there are a lot. Sure. How can I test the changes to the documentation? Like generating a pdf or something along those lines. > By the way, shouldn't `bluetooth-service` be deprecated, given how > simple it is to use the `-type` version? I'm not the one to answer that :) > What do others think? > > Best, > Josselin Poiret =2D-=20 Best regards / Mit freundlichen Gr=C3=BC=C3=9Fen, Demis Balbach --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJCBAEBCgAsFiEEz9zHmXzCRksxyCGU8X3bmMw8QFwFAmG4r24OHGRiQG1pbmlr bi54eXoACgkQ8X3bmMw8QFzkghAAqhYkNa1llPjd4qVKkYBOar+GRsbYtlSsiexK Y75mZpScIG2iaIWMOPMHudiFzJgVIIkEgUqrFp0yjOBDwAvDpXACsLAXu2QCXYq9 UC+EymiPHMVOw138E2jnh+ebOMFIi097hyyrxhlZcUFQiOObvb+jcn2lt/gm9IH/ q+UR6DDpaOl/k/YmRm3m7GXJ+W70TJM86HHOhUXWGSFSRQiI0Kwl2hCFaOPFzPsM uFVEKonFyT/01qRF/ev5bOd3KDa0sB25+DZd/a1+/7ZYPWcdjNSA8N795whPu7tP n1oz7ZavJOlP3PVRajw74xDkvTu/RfbowJQ/ca/C2enmRzjx0LnZpn14xrN01KHL 8igBrFHhXDHYDDPDSBxSfu+FJpTyD5ndabGGy53iJ/k0jFAQ4Ts0r5Nl39sZWlfi IwsBG7qSQ9jhaW35vwIU1RF7eoTNOQtTW9ddxBy6BLoq876/fFOKy9ifp6U8wJNv 6GivDpBLu7CH0EPRx4W+3G8FPSPfternvzBbfWhS0w+kNu5ZJv8HLxjtdw5qe5As ctcY0azxTjRl7+d3yg+Hg96cmrx8T4OJl07rF2QO9r1tzpdWX0PHJ6P+EG0vpNNi AChQ9qZGY7ZghmVsPLorMVZ41HPRzxVHpjq92bxo/cXtDa+6ED7GN3TCFqltY612 yDcjhrc= =S0/X -----END PGP SIGNATURE----- --=-=-=-- From unknown Sat Sep 06 20:53:51 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#52470] [PATCH] services: bluetooth: Add missing config parameters Resent-From: Demis Balbach Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Tue, 14 Dec 2021 20:51:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 52470 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Josselin Poiret , 52470@debbugs.gnu.org Cc: dev@jpoiret.xyz Received: via spool by 52470-submit@debbugs.gnu.org id=B52470.163951504028525 (code B ref 52470); Tue, 14 Dec 2021 20:51:01 +0000 Received: (at 52470) by debbugs.gnu.org; 14 Dec 2021 20:50:40 +0000 Received: from localhost ([127.0.0.1]:59726 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mxEkx-0007Q1-Tg for submit@debbugs.gnu.org; Tue, 14 Dec 2021 15:50:40 -0500 Received: from mout-p-201.mailbox.org ([80.241.56.171]:51344) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mxEkv-0007Pn-LV for 52470@debbugs.gnu.org; Tue, 14 Dec 2021 15:50:37 -0500 Received: from smtp202.mailbox.org (smtp202.mailbox.org [80.241.60.245]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4JD9WC4cDGzQkF4; Tue, 14 Dec 2021 21:50:31 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minikn.xyz; s=MBO0001; t=1639515029; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=fLbk3EWLirwtCyglWBJMkPbLuKxI6Zu0llCWsmsdRGc=; b=spbEE9Ha2xsnolNPmrCIuLR2phJQfzOZb4kDLrz+10NCJWY5e87syIq1tanZUgXE0T0POX 92m18bx5g/8VJq69HNdY47M0BBhZ/43zRtGU0BRTt68g6WI+nokOVR/jQPpeduWQNLlZye +y15/OFm3Zoig4oCzz1Ay/ccUFrSAnydNCjdnWM1AHj/kVqcA3uuTNdWyY6qvsd4q0rNd9 xP/dhZx6VGy5D96dOGZXq/JgnprHgVd0w+rJBYh8Yz0ntIr1t/WWy+/K5PUFKz3B8MwmEC 2XfhLoU/42ZG8JOcU9bdj8dcUMkshpTA+2RtYCTziP95HXATeZTYCwok++GPtA== From: Demis Balbach In-Reply-To: <87bl1jfiel.fsf@jpoiret.xyz> References: <20211213192014.8386-1-db@minikn.xyz> <87bl1kthz3.fsf@minikn.xyz> <87bl1jfiel.fsf@jpoiret.xyz> Date: Tue, 14 Dec 2021 21:50:26 +0100 Message-ID: <8735murjvx.fsf@minikn.xyz> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: 1.8 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On 2021-12-14 14:03, Josselin Poiret wrote: I've added a new patch. ID: 52489. Please check for spelling mistakes/typos. This kind of work is very repetitive and thus prone to errors. Content analysis details: (1.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [80.241.56.171 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: minikn.xyz (xyz)] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.8 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On 2021-12-14 14:03, Josselin Poiret wrote: I've added a new patch. ID: 52489. Please check for spelling mistakes/typos. This kind of work is very repetitive and thus prone to errors. Content analysis details: (1.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [80.241.56.171 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: minikn.xyz (xyz)] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD 1.0 BULK_RE_SUSP_NTLD Precedence bulk and RE: from a suspicious TLD -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 2021-12-14 14:03, Josselin Poiret wrote: I've added a new patch. ID: 52489. Please check for spelling mistakes/typos. This kind of work is very repetitive and thus prone to errors. =2D-=20 Best regards / Mit freundlichen Gr=C3=BC=C3=9Fen, Demis Balbach --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJCBAEBCgAsFiEEz9zHmXzCRksxyCGU8X3bmMw8QFwFAmG5A5IOHGRiQG1pbmlr bi54eXoACgkQ8X3bmMw8QFzA2RAArgJELZvec8kYnGBP4u3XPFcWmcoKF6VG36EK oPqiN+o6m6vN9tmhx9gVid9f70AG7pSx2fR8BAuZC5MX0DORy14tBQIXpUbCWvyO zL8NwLeipVMQJrD2cHsGEPrfxdjMW8UtqLQIBejMRd/tTkypwYLOOK4PkjS0c/7R GMS50CIwioIPr+sc4h4vC0s+4KK8WmW+b5VnDv4EfuvuOASk7h9lpDVp+/FF5ot2 MxSQV6DS+sHcGOS5n7dS3LgUwwzLORcVaMxaQI7rwWyUvSAJFFlV6sWNavoRDfz6 zqlK5edf1nEJQBiI86lUM/fK8LH97Uugf8iD8ks1JDpUmnMeQ/M3EntFWNnL6xAw BDCmjWv71CHm/CcVbAw1CmzJ+uHlpN20mu7W3V90iBllFjIJ/vDSsfBXxxaAS+1z bueT8rlHpTIyFi7QbdTkg4oyxPhaztdYFYRJi5Xed+4hU5FwsiZe9DSTcQd4NptH OtYS7ykaRiiTmPP2uTWrk6xIiCR23aQLhYLkC8auq6ir0jKyF5z6XOKEXkNSgI3U b45NX0/I/kXE31vsrFnGebdgAJ5qxkFiRZJb2NNE8Q7+O01PaC+75tayH2whKf73 yOsIgysp2FBLomoiGmKwr8G2eR2ytAg58SrqekJK31nqGz9EOTqqLbRYAfpDw564 oR8eDR0= =5ZZR -----END PGP SIGNATURE----- --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 18 06:02:23 2021 Received: (at control) by debbugs.gnu.org; 18 Dec 2021 11:02:23 +0000 Received: from localhost ([127.0.0.1]:41356 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1myXTr-0005UT-FF for submit@debbugs.gnu.org; Sat, 18 Dec 2021 06:02:23 -0500 Received: from mail-wr1-f65.google.com ([209.85.221.65]:35774) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1myXTq-0005UH-PC for control@debbugs.gnu.org; Sat, 18 Dec 2021 06:02:23 -0500 Received: by mail-wr1-f65.google.com with SMTP id j18so8988257wrd.2 for ; Sat, 18 Dec 2021 03:02:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:subject:from:to:date:user-agent:mime-version :content-transfer-encoding; bh=feBIBn3DnWJpNlwMR68aEot+GVCJwsQlLD6eLpSX+Lk=; b=kXSlQjhN/8x9BfF2o+m7zeGBu+UbdpQtV79oIW03LprqwiU7Cc/3qDN23zcF4mPUun zqQpS9Zwy55cJDZcDRilunPE57TNT+EZAYu/T9o7NRIveLWFHLR4xh8ZRQffUyHacUPT Kcrzn2DfIBmDDLSn2BUdr87WaU/eWHBMhLrzQbRuLNujjAIA2nZwsYoESYNI2pL6cnuA durWLiSV1CfFXgihNd1CZ2BDgh8r6m64Nhe3hdQznRcGqlVBjpyCJHqHJy49YwtwmGsx 5ZcxD2iOVvH0Nof4M2/+gNW4UgPYWx0MNbh7t9maLb2lQW6tzCxvXKeXr7BKqgboXOzm DKyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:date:user-agent :mime-version:content-transfer-encoding; bh=feBIBn3DnWJpNlwMR68aEot+GVCJwsQlLD6eLpSX+Lk=; b=jCRjhQrF3ySENkSokFtbR7S3M9HrflMgB2TvwTqNItKDm/U87yZtnWfiEPLqbmB1Fu sEXMksRZyx1bzsEsk1u+DoxbjNS5XYeCVchbT0OYAKV5WJLtK9aqbMGN16TpKZMMjCDj VweN70wAEv1ozi8DNpTvB1SaR41eTMOUwoJ9Ea8USrtoEDJlSgExlpWASwvv3LD+oDEj 2HA8SuY8IxRnd6utXo/sHwNsfHbEcYcguRMXQWqcWWlqvsSrM+4t+iMYSIHnVU4usvss HUnRx2+URD00NkWU2jV5ILHhg9cth1LcegP837XkAR5DSqRZLnVkHzkz73YFzdkMiiJ2 IphQ== X-Gm-Message-State: AOAM531HHl3py6pgP5fsMMKYZrjILQ7UkYotKW3KiQazNO9GIyJn2uiC 6rsEuYmVW2eMRzgSWqUilqM= X-Google-Smtp-Source: ABdhPJzEnmSXuLzYy6TBEeRtBafY5jmqj3ky/CTF0L1vuqpMkHD1p6TJkwbhFEoAmt3Axcq41RLUOw== X-Received: by 2002:adf:90e5:: with SMTP id i92mr5714481wri.675.1639825337113; Sat, 18 Dec 2021 03:02:17 -0800 (PST) Received: from nijino.fritz.box ([85.127.52.93]) by smtp.gmail.com with ESMTPSA id k7sm9894167wri.110.2021.12.18.03.02.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Dec 2021 03:02:16 -0800 (PST) Message-ID: <3616338da321d379a9d78260fa06ba849b2318d3.camel@gmail.com> Subject: [PATCH] services: bluetooth: Add missing config parameters From: Liliana Marie Prikler To: db@minikn.xyz, control@debbugs.gnu.org Date: Sat, 18 Dec 2021 12:02:11 +0100 Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.42.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) merge 52470 52489 52575 thanks Please don't open up a new bug number for a new patch. Instead, reply to the old one. Thanks. From unknown Sat Sep 06 20:53:51 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#52470] [PATCH] services: bluetooth: Add missing config parameters References: <20211213192014.8386-1-db@minikn.xyz> In-Reply-To: <20211213192014.8386-1-db@minikn.xyz> Resent-From: Demis Balbach Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 19 Dec 2021 13:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 52470 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 52470@debbugs.gnu.org Received: via spool by 52470-submit@debbugs.gnu.org id=B52470.163991952730125 (code B ref 52470); Sun, 19 Dec 2021 13:13:02 +0000 Received: (at 52470) by debbugs.gnu.org; 19 Dec 2021 13:12:07 +0000 Received: from localhost ([127.0.0.1]:45216 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1myvyx-0007pp-B0 for submit@debbugs.gnu.org; Sun, 19 Dec 2021 08:12:07 -0500 Received: from mout-p-102.mailbox.org ([80.241.56.152]:23406) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1myvys-0007pH-66 for 52470@debbugs.gnu.org; Sun, 19 Dec 2021 08:12:06 -0500 Received: from smtp102.mailbox.org (smtp102.mailbox.org [IPv6:2001:67c:2050:105:465:1:3:0]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4JH35l3wv3zQkjk for <52470@debbugs.gnu.org>; Sun, 19 Dec 2021 14:11:55 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minikn.xyz; s=MBO0001; t=1639919513; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=zqSWh0fOA+jMkypLScos4CRKmgBBhgpZhogwSRVe/IM=; b=Q/dMBfryD2Nx1I6BVWz1G9/oJRpMqLEsd6IdEQZqSuBy2bf49A9qVJhm85GAkVzAmzztrP BuXcuonHIrW8NEqJ4wInWIm2V3q4kn3O5IUyDkxj5er3qjQVN4gYiLRLeprgERGSVCtw1g E4pqWmPrGERn1rWbzP67u9FpSK5/1l3XUMFd8W9KpoMw+RSeEoA5h9I6xaDBJ06uqATrG0 dyG8GOf+2g6yrndfSfqp/T9vmpzhDZjdG3KJ7jETr4UDH0swtDtBZ51NOAR8+uED5Eh+Bv 0fHSH817s8eoiUGy4bv9VjqroblHPvmNiwiY4uPOcXG4uh/noFMP42LLzercCA== From: Demis Balbach Date: Sun, 19 Dec 2021 14:11:49 +0100 Message-ID: <878rwgagdm.fsf@minikn.xyz> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: 2.4 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Hello Liliana, thanks for your input on https://issues.guix.gnu.org/52575. I will continue the discussion about it here. You prepend most of your comments with "Why not do ...". I have an universal answer for that: I don't know :) I did what I did with the limited Guile knowledge at my disposal. I'm still learning every [...] Content analysis details: (2.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [80.241.56.152 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: minikn.xyz (xyz)] 0.0 T_SPF_HELO_TEMPERROR SPF: test of HELO record failed (temperror) 0.5 FROM_SUSPICIOUS_NTLD_FP From abused NTLD 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.8 (/) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello Liliana, thanks for your input on https://issues.guix.gnu.org/52575. I will continue the discussion about it here. You prepend most of your comments with "Why not do ...". I have an universal answer for that: I don't know :) I did what I did with the limited Guile knowledge at my disposal. I'm still learning everyday and therefore am thankful for your recommendations. > Is it really a good idea to use a string-encoded number here? Why not > a number? Why not two? A pair or list of symbols mayhaps? It should be a number, you are correct. > You maybe want to have a record here, but fair enough, a > string works too. I can see the benefit of that, but maybe that's something for another patch. I can add a `;;; MAYBE: ` comment to the implementation however if that's desired. > Why have a key network/on? Why not use 'on and 'network and document, > that they function the same due to (insert implementation detail). I think this point we need to discuss. I tried to implement things as close as possible to the "original" keys/values in https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf Specifically for the `privacy` key, you can see the implementation here https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n68, in particular =2D-8<---------------cut here---------------start------------->8--- # Possible values for LE mode: "off", "network/on", "device" # Possible values for Dual mode: "off", "network/on", "device", # "limited-network", "limited-device" =2D-8<---------------cut here---------------end--------------->8--- Now, I don't think it's a good idea to introduce arbitrary values for Guix, meaning split `network/on` in `'network` and `'on`. In my opinion (which may very well be wrong) the config values applicable in Guix should match those in the resulting config file as close as possible. For a user coming to Guix who already worked with the bluetooth configurati= on on another distro, seeing `'network` and/or `'on` (but not `'network/on`) as possible config values, is confusing, at least I think it is. > Why a list of UUIDs? Wouldn't it make more sense to use symbols like > 'debug, 'll-privacy, 'quality-report, etc.? > On that note, we have a UUID type, so use it. I actually didn't know there's a UUID type. This makes more sense. But not a list as only one value can be applied. Also I would advise introducing symbol like `'ll-privacy` and the like because of what I said earlier. > Should be a boolean. Same point here. I used boolean types whereever the config value need was `true`/`false`. In this particular case (I don't know why) the bluetooth implementations expects `0`/`1` instead of the former. This is why I kept it a number. However, in this case I think it's okay to deviate from the original implementation because `0` and false / `1` and `true` are universally understood as being equivalent (By this of course I mean the user would set `#f`/`#t`, the written value however would still be `0`/`1`). > Might want to rename/alias 'yes to 'paired. Again, same point here. `'paired` would be an arbitrary value only Guix have. > You probably want to write that as "an integer 7 <=3D N <=3D 16". ... >As above. Yes, absolutely. > Again, make sure that your code works with UUIDs here if it doesn't > already. Will do. > Use numbers, not strings. Will do. I'll create a new patch with all the things altered I agree about. I'll leave the rest until we have talked about the points I made.=20 =2D-=20 Best regards / Mit freundlichen Gr=C3=BC=C3=9Fen, Demis Balbach --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJCBAEBCgAsFiEEz9zHmXzCRksxyCGU8X3bmMw8QFwFAmG/L5UOHGRiQG1pbmlr bi54eXoACgkQ8X3bmMw8QFwDcQ/+ORzrlQxQJi0lfJg1FaTW/6eCOBLctkLoFsaB dWbO8Zaz75B/k0TqwZ8E1fiPWfzlSX7fmlqzDuWSh8wDt1cH9c7I3QNKgY7eCpTy 1Z/aFZl1O/Fu7Em5lZWMh3Ce89lDe9+ijTQqGHPaIi6ZC0bJ/vAxRkibwLMBQDC0 8ltFrP/fVJicnKTASqspDVQ0c91l5XuXSDTo+VOoAbP7zpIFNCvKSWLIRfrcJNxj mFDzP2Dekp/NqWkWIydTPlyDYlkojiv07zLjaSP44EcF2CeWrFOA9RhkJvUxl0Ks Y7SxGCfJfhHKSTvGG/DfLweCVUpN0iAUeffyrtheoJ0rkUYcMmKff2qyJgIHWYM2 cH4d5F0/G6WL0Unc0n0U5pY26gfIrA441KgT3ROebF/8hnBbINVBHzmRmaPxYGfx vThFO9Go9brvz7xCdKIWcTVp6WzhfbaW/EDf+r6f9rEmTNm/XPjGBR2inDV4J2bH 2NMi7nKo+jWuQ4wBlseRm5tdDyIO3SEO4HrTW5EB6UdozQrPRKLObmYfJtilnPk2 3DLFMZ0ZZOxK6wyiqGMPN7+q8OKGkvX4DGYDgCRNq4WBnTtVTvmTgYLeeA1wtvjj SqFxbTXix/hE+EGnuleSEtds/FoVuuq33WkIFDEV2dMQjE56iwDWPae43lw4ZV2E 2JaxnC4= =cXfC -----END PGP SIGNATURE----- --=-=-=-- From unknown Sat Sep 06 20:53:51 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#52470] [PATCH] services: bluetooth: Add missing config parameters References: <20211213192014.8386-1-db@minikn.xyz> In-Reply-To: <20211213192014.8386-1-db@minikn.xyz> Resent-From: Demis Balbach Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 19 Dec 2021 13:20:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 52470 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 52470@debbugs.gnu.org Received: via spool by 52470-submit@debbugs.gnu.org id=B52470.16399199546863 (code B ref 52470); Sun, 19 Dec 2021 13:20:01 +0000 Received: (at 52470) by debbugs.gnu.org; 19 Dec 2021 13:19:14 +0000 Received: from localhost ([127.0.0.1]:45230 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1myw5q-0001md-Mg for submit@debbugs.gnu.org; Sun, 19 Dec 2021 08:19:14 -0500 Received: from mout-p-103.mailbox.org ([80.241.56.161]:28840) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1myw5o-0001mM-Dv for 52470@debbugs.gnu.org; Sun, 19 Dec 2021 08:19:13 -0500 Received: from smtp1.mailbox.org (smtp1.mailbox.org [80.241.60.240]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-103.mailbox.org (Postfix) with ESMTPS id 4JH3G16PppzQk9k for <52470@debbugs.gnu.org>; Sun, 19 Dec 2021 14:19:05 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minikn.xyz; s=MBO0001; t=1639919944; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=LxaYAeZeum/F+LMDO7CzRDLneMM/rkN4CnVehcwCyRE=; b=nVngE0WQ1fJ8NI2VDAVqA+8ji81d0b3NMK+LokRwmNkXhhVgC/SBVHvctZ5/plnRp/frcF j2rdch5P9W3y+cH1RKaPRcU+LO1GqsM1lS3NK/PH9tjkkol9J4k0neCS8EAD0EtCas29y7 AIsfpd2vAiWFs7yVV4Etg4OfJ2jJ7vZwPx21Zy+8r3hqT7+icjA3WeJ4ln+9GI2PPhQ5Wq 23Wv/yIk1rQIHNkw9LDYZB0i26ButpKCdNnsxlnkvZAsEmbe+Pb3lWrs81nf4MdEvuQ831 PSiVuK4mJsKF43v+cTfu28SANh82IGX/wo0oPsXg7mw0Trkb+8L0O04Vd6NUHg== From: Demis Balbach Date: Sun, 19 Dec 2021 14:19:01 +0100 Message-ID: <8735moag1m.fsf@minikn.xyz> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: 2.3 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > I actually didn't know there's a UUID type. This makes more sense. But > not a list as only one value can be applied. Also I would advise > introducing symbol like `'ll-privacy` and the like because [...] Content analysis details: (2.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [80.241.56.161 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: minikn.xyz (xyz)] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.5 FROM_SUSPICIOUS_NTLD_FP From abused NTLD 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.8 (/) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable > I actually didn't know there's a UUID type. This makes more sense. But > not a list as only one value can be applied. Also I would advise > introducing symbol like `'ll-privacy` and the like because of what I > said earlier. Typo: I meant "advise AGAINST introducing ... " =2D-=20 Best regards / Mit freundlichen Gr=C3=BC=C3=9Fen, Demis Balbach --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJCBAEBCgAsFiEEz9zHmXzCRksxyCGU8X3bmMw8QFwFAmG/MUUOHGRiQG1pbmlr bi54eXoACgkQ8X3bmMw8QFzopg//fK60U2EA+KRO8/S6Kxlks2ViIkDryZtEAkbj Q+YSvoM8BuDtmOs0HSJTY528LBYkOGr42vVfCHHnBCzpoGSnEEMvDNXs7IBgUBa7 orvlqTstjVkwwSiPeKlWwbccVRAoPrtW2yi2UMRTswyRwrtAZB6ije5ITF5zSiOS vRgkGKfNmgDVKhIzlqtre789PpI292p1yg6SS3JXUZToPx0vp7ZB1f1RD3NbkDzz uhJYQ5ktreFy14OTIv7UwRVUZLuMV2UVym+bib+Q1wJKDM4TnkzXjPNfawLOpBkY hK1mgMgM8o7ltR6pg4PqA8MYvA2N6P2V1zX9FJUzveoM/zPaeEjuS7oBx9+qFDuV R5pyTM5YEF8lu8i0kOw5HLRpdDbR8zidGDkcZBaH5WPN+kIlsUJGWAu9ccJqnDYn SbRufmHTdgMn1wiGej6HKw+o/1mPNysr7GC5r1aqkdugKZIhP54J2n7kQadCY7/1 ioY+7NJvtgeRV/njdUlppsxa0oqJsgMYL6qM9gBCNvahDmPlqOXGkKxL9icSjuWD GhXEPLt46XYEPdsow+5l2/cmsZKsQTtlvNVpfLGz5yzSq2nRXNgYzD1xr99Au2G5 wvMFno9KN+EIqqasBsOSXSv071D5tti8VcQ03H1Yne/IsLp23F2G3bidR7LSOFDL sos/MZ4= =eHm9 -----END PGP SIGNATURE----- --=-=-=-- From unknown Sat Sep 06 20:53:51 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#52470] [PATCH] services: bluetooth: Add missing config parameters References: <20211213192014.8386-1-db@minikn.xyz> In-Reply-To: <20211213192014.8386-1-db@minikn.xyz> Resent-From: Demis Balbach Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 19 Dec 2021 16:43:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 52470 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 52470@debbugs.gnu.org Received: via spool by 52470-submit@debbugs.gnu.org id=B52470.16399321256651 (code B ref 52470); Sun, 19 Dec 2021 16:43:02 +0000 Received: (at 52470) by debbugs.gnu.org; 19 Dec 2021 16:42:05 +0000 Received: from localhost ([127.0.0.1]:47853 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1myzG7-0001jB-V3 for submit@debbugs.gnu.org; Sun, 19 Dec 2021 11:42:05 -0500 Received: from mout-p-101.mailbox.org ([80.241.56.151]:57176) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1myzG4-0001iC-Bf for 52470@debbugs.gnu.org; Sun, 19 Dec 2021 11:42:02 -0500 Received: from smtp202.mailbox.org (smtp202.mailbox.org [80.241.60.245]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4JH7m162fQzQkBq for <52470@debbugs.gnu.org>; Sun, 19 Dec 2021 17:41:53 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minikn.xyz; s=MBO0001; t=1639932111; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=69I4tD2g+cxXc3pEuY6vJuXvPOA01Zt4Ezy6W2qwilk=; b=pnnps36OhHViWlcttDg5ba/Phxfu9oXb6/LubuxuWGbVzfHhEmxehvn+sOCXWKxq/FkGTq L/wQlPxxeBoyTZ1hCpfLPxqMjM7jX3us2oPyH9MXgL9eafQ38IEaj718tDnyeEXIjlajrq Q0MJg+z5EnSP3VanXaeYfCpVZwAmm/SNLeTAFAjb1ykeEWHyMMuURjnzDvYqIgwVNIESS2 XmNUvP6C6z9e8IzF/a7dRroCmfPpYUxfjDl85uxS3xZmYRQKnjxZUmUkTkxIlUJQQ3qnul +iP0TDd5TCMHaSscCOCBmgUyQiAizWyK7qrmbXJOFUdcg/qlKhH0c/56TPFcCg== From: Demis Balbach Date: Sun, 19 Dec 2021 17:41:46 +0100 Message-ID: <87zgow8s39.fsf@minikn.xyz> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: 2.3 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: --- doc/guix.texi | 443 ++++++++++++++++++++++++++++++++++++++- gnu/services/desktop.scm | 375 ++++++++++++++++++++++++++++++++- 2 files changed, 813 insertions(+), 5 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index aca88cdada..138a862ff1 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -20777,6 +20777,448 @@ bluetooth keyboard or mouse. Users need to be in the @c [...] Content analysis details: (2.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [80.241.56.151 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [80.241.56.151 listed in list.dnswl.org] 0.0 SPF_NONE SPF: sender does not publish an SPF Record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: minikn.xyz (xyz)] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.5 FROM_SUSPICIOUS_NTLD_FP From abused NTLD 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD -0.0 RCVD_IN_MSPIKE_WL Mailspike good senders X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.8 (/) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable =2D-- doc/guix.texi | 443 ++++++++++++++++++++++++++++++++++++++- gnu/services/desktop.scm | 375 ++++++++++++++++++++++++++++++++- 2 files changed, 813 insertions(+), 5 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index aca88cdada..138a862ff1 100644 =2D-- a/doc/guix.texi +++ b/doc/guix.texi @@ -20777,6 +20777,448 @@ bluetooth keyboard or mouse. Users need to be in the @code{lp} group to access the D-Bus service. @end deffn =20 +@deffn {Scheme Variable} bluetooth-service-type +This is the type for the @uref{https://bluez.org/, Linux Bluetooth Protocol +Stack} (BlueZ) system, which generates the @file{/etc/bluetooth/main.conf} +configuration file. The value for this type is a @command{bluetooth-confi= guration} +record as in this example: + +@lisp +(service bluetooth-service-type) +@end lisp + +See below for details about @code{bluetooth-configuration}. +@end deffn + +@deftp {Data Type} bluetooth-configuration +Data type representing the configuration for @code{bluetooth-service}. + +@table @asis +@item @code{bluez} (default: @code{bluez}) +@code{bluez} package to use. + +@item @code{name} (default: @code{"BlueZ"}) +Default adapter name. + +@item @code{class} (default: @code{#x000000}) +Default device class. Only the major and minor device class bits are consi= dered. + +@item @code{discoverable-timeout} (default: @code{180}) +How long to stay in discoverable mode before going back to non-discoverabl= e. The +value is in seconds. + +@item @code{always-pairable?} (default: @code{#f}) +Always allow pairing even if there are no agents registered. + +@item @code{pairable-timeout} (default: @code{0}) +How long to stay in pairable mode before going back to non-discoverable. T= he +value is in seconds. + +@item @code{device-id} (default: @code{#f}) +Use vendor id source (assigner), vendor, product and version information f= or +DID profile support. The values are separated by ":" and @var{assigner}, @= var{VID}, +@var{PID} and @var{version}. + +Possible values are: + +@itemize @bullet +@item +@code{#f} to disable it, + +@item +@code{"assigner:1234:5678:abcd"}, where @var{assigner} is either @code{usb= } (default) +or @code{bluetooth}. + +@end itemize + +@item @code{reverse-service-discovery?} (default: @code{#t}) +Do reverse service discovery for previously unknown devices that connect to +us. For BR/EDR this option is really only needed for qualification since t= he +BITE tester doesn't like us doing reverse SDP for some test cases, for LE +this disables the GATT client functionally so it can be used in system whi= ch +can only operate as peripheral. + +@item @code{name-resolving?} (default: @code{#t}) +Enable name resolving after inquiry. Set it to @code{#f} if you don't need +remote devices name and want shorter discovery cycle. + +@item @code{debug-keys?} (default: @code{#f}) +Enable runtime persistency of debug link keys. Default is false which makes +debug link keys valid only for the duration of the connection that they we= re +created for. + +@item @code{controller-mode} (default: @code{'dual}) +Restricts all controllers to the specified transport. @code{'dual} means b= oth +BR/EDR and LE are enabled (if supported by the hardware). + +Possible values are:=20 + +@itemize @bullet +@item +@code{'dual} + +@item +@code{'bredr} + +@item +@code{'le} + +@end itemize + +@item @code{multi-profile} (default: @code{'off}) +Enables Multi Profile Specification support. This allows to specify if sys= tem +supports only Multiple Profiles Single Device (MPSD) configuration or both +Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple Devi= ces +(MPMD) configurations. + +Possible values are: + +@itemize @bullet +@item +@code{'off} + +@item +@code{'single} + +@item +@code{'multiple} + +@end itemize + +@item @code{fast-connectable?} (default: @code{#f}) +Permanently enables the Fast Connectable setting for adapters that support +it. When enabled other devices can connect faster to us, however the +tradeoff is increased power consumptions. This feature will fully work only +on kernel version 4.1 and newer. + +@item @code{privacy} (default: @code{'off}) +Default privacy settings. + +@itemize @bullet +@item +@code{'off}: Disable local privacy + +@item +@code{'network/on}: A device will only accept advertising packets from peer +devices that contain private addresses. It may not be compatible with some +legacy devices since it requires the use of RPA(s) all the time + +@item +@code{'device}: A device in device privacy mode is only concerned about the +privacy of the device and will accept advertising packets from peer devices +that contain their Identity Address as well as ones that contain a private +address, even if the peer device has distributed its IRK in the past + +@end itemize + +and additionally, if @var{controller-mode} is set to @code{'dual}: + +@itemize @bullet +@item +@code{'limited-network}: Apply Limited Discoverable Mode to advertising, w= hich +follows the same policy as to BR/EDR that publishes the identity address w= hen +discoverable, and Network Privacy Mode for scanning + +@item +@code{'limited-device}: Apply Limited Discoverable Mode to advertising, wh= ich +follows the same policy as to BR/EDR that publishes the identity address w= hen +discoverable, and Device Privacy Mode for scanning. + +@end itemize + +@item @code{just-works-repairing} (default: @code{'never}) +Specify the policy to the JUST-WORKS repairing initiated by peer. + +Possible values: +@itemize @bullet +@item +@code{'never} + +@item +@code{'confirm} + +@item +@code{'always} + +@end itemize + +@item @code{temporary-timeout} (default: @code{30}) +How long to keep temporary devices around. The value is in seconds. @code{= 0} +disables the timer completely. + +@item @code{refresh-discovery?} (default: @code{#t}) +Enables the device to issue an SDP request to update known services when +profile is connected. + +@item @code{experimental} (default: @code{#f}) +Enables experimental features and interfaces, alternatively a list of UUIDs +can be given. + +Possible values: + +@itemize @bullet +@item +@code{#t} + +@item +@code{#f} + +@item +@code{(list (uuid ) (uuid ) ...)}. +@end itemize + +List of possible UUIDs: +@itemize @bullet +@item +@code{d4992530-b9ec-469f-ab01-6c481c47da1c}: BlueZ Experimental Debug, + +@item +@code{671b10b5-42c0-4696-9227-eb28d1b049d6}: BlueZ Experimental Simultaneo= us Central and Peripheral, + +@item +@code{"15c0a148-c273-11ea-b3de-0242ac130004}: BlueZ Experimental LL privac= y, + +@item +@code{330859bc-7506-492d-9370-9a6f0614037f}: BlueZ Experimental Bluetooth = Quality Report, + +@item +@code{a6695ace-ee7f-4fb9-881a-5fac66c629af}: BlueZ Experimental Offload Co= decs. +@end itemize + +@item @code{remote-name-request-retry-delay} (default: @code{300}) +The duration to avoid retrying to resolve a peer's name, if the previous +try failed. + +@item @code{page-scan-type} (default: @code{#f}) +BR/EDR Page scan activity type. + +@item @code{page-scan-interval} (default: @code{#f}) +BR/EDR Page scan activity interval. + +@item @code{page-scan-window} (default: @code{#f}) +BR/EDR Page scan activity window. + +@item @code{inquiry-scan-type} (default: @code{#f}) +BR/EDR Inquiry scan activity type. + +@item @code{inquiry-scan-interval} (default: @code{#f}) +BR/EDR Inquiry scan activity interval. + +@item @code{inquiry-scan-window} (default: @code{#f}) +BR/EDR Inquiry scan activity window. + +@item @code{link-supervision-timeout} (default: @code{#f}) +BR/EDR Link supervision timeout. + +@item @code{page-timeout} (default: @code{#f}) +BR/EDR Page timeout. + +@item @code{min-sniff-interval} (default: @code{#f}) +BR/EDR minimum sniff interval. + +@item @code{max-sniff-interval} (default: @code{#f}) +BR/EDR maximum sniff interval. + +@item @code{min-advertisement-interval} (default: @code{#f}) +LE minimum advertisement interval (used for legacy advertisement only). + +@item @code{max-advertisement-interval} (default: @code{#f}) +LE maximum advertisement interval (used for legacy advertisement only). + +@item @code{multi-advertisement-rotation-interval} (default: @code{#f}) +LE multiple advertisement rotation interval. + +@item @code{scan-interval-auto-connect} (default: @code{#f}) +LE scanning interval used for passive scanning supporting auto connect. + +@item @code{scan-window-auto-connect} (default: @code{#f}) +LE scanning window used for passive scanning supporting auto connect. + +@item @code{scan-interval-suspend} (default: @code{#f}) +LE scanning interval used for active scanning supporting wake from suspend. + +@item @code{scan-window-suspend} (default: @code{#f}) +LE scanning window used for active scanning supporting wake from suspend. + +@item @code{scan-interval-discovery} (default: @code{#f}) +LE scanning interval used for active scanning supporting discovery. + +@item @code{scan-window-discovery} (default: @code{#f}) +LE scanning window used for active scanning supporting discovery. + +@item @code{scan-interval-adv-monitor} (default: @code{#f}) +LE scanning interval used for passive scanning supporting the advertisemen= t monitor APIs. + +@item @code{scan-window-adv-monitor} (default: @code{#f}) +LE scanning window used for passive scanning supporting the advertisement = monitor APIs. + +@item @code{scan-interval-connect} (default: @code{#f}) +LE scanning interval used for connection establishment. + +@item @code{scan-window-connect} (default: @code{#f}) +LE scanning window used for connection establishment. + +@item @code{min-connection-interval} (default: @code{#f}) +LE default minimum connection interval. This value is superceeded by any s= pecific +value provided via the Load Connection Parameters interface. + +@item @code{max-connection-interval} (default: @code{#f}) +LE default maximum connection interval. This value is superceeded by any s= pecific +value provided via the Load Connection Parameters interface. + +@item @code{connection-latency} (default: @code{#f}) +LE default connection latency. This value is superceeded by any specific +value provided via the Load Connection Parameters interface. + +@item @code{connection-supervision-timeout} (default: @code{#f}) +LE default connection supervision timeout. This value is superceeded by an= y specific +value provided via the Load Connection Parameters interface. + +@item @code{autoconnect-timeout} (default: @code{#f}) +LE default autoconnect timeout. This value is superceeded by any specific +value provided via the Load Connection Parameters interface. + +@item @code{adv-mon-allowlist-scan-duration} (default: @code{300}) +Allowlist scan duration during interleaving scan. Only used when scanning = for ADV +monitors. The units are msec. + +@item @code{adv-mon-no-filter-scan-duration} (default: @code{500}) +No filter scan duration during interleaving scan. Only used when scanning = for ADV +monitors. The units are msec. + +@item @code{enable-adv-mon-interleave-scan?} (default: @code{#t}) +Enable/Disable Advertisement Monitor interleave scan for power saving. + +@item @code{cache} (default: @code{'always}) +GATT attribute cache. + +Possible values are: +@itemize @bullet +@item +@code{'always}: Always cache attributes even for devices not paired, this = is +recommended as it is best for interoperability, with more consistent +reconnection times and enables proper tracking of notifications for all +devices + +@item +@code{'yes}: Only cache attributes of paired devices + +@item +@code{'no}: Never cache attributes. +@end itemize + +@item @code{key-size} (default: @code{0}) +Minimum required Encryption Key Size for accessing secured characteristics. + +Possible values are: +@itemize @bullet +@item +@code{0}: Don't care + +@item +@code{7 <=3D N <=3D 16} +@end itemize + +@item @code{exchange-mtu} (default: @code{517}) +Exchange MTU size. Possible values are: + +@itemize @bullet +@item +@code{23 <=3D N <=3D 517} +@end itemize + +@item @code{att-channels} (default: @code{3}) +Number of ATT channels. Possible values are: + +@itemize @bullet +@item +@code{1}: Disables EATT + +@item +@code{2 <=3D N <=3D 5} +@end itemize + +@item @code{session-mode} (default: @code{'basic}) +AVDTP L2CAP signalling channel mode. + +Possible values are: + +@itemize @bullet +@item +@code{'basic}: Use L2CAP basic mode + +@item +@code{'ertm}: Use L2CAP enhanced retransmission mode. +@end itemize + +@item @code{stream-mode} (default: @code{'basic}) +AVDTP L2CAP transport channel mode. + +Possible values are: + +@itemize @bullet +@item +@code{'basic}: Use L2CAP basic mode + +@item +@code{'streaming}: Use L2CAP streaming mode. +@end itemize + +@item @code{reconnect-uuids} (default: @code{'()}) +The ReconnectUUIDs defines the set of remote services that should try +to be reconnected to in case of a link loss (link supervision +timeout). The policy plugin should contain a sane set of values by +default, but this list can be overridden here. By setting the list to +empty the reconnection feature gets disabled. + +Possible values: + +@itemize @bullet +@item +@code{'()} + +@item +@code{(list (uuid ) (uuid ) ...)}. +@end itemize + +@item @code{reconnect-attempts} (default: @code{7}) +Defines the number of attempts to reconnect after a link lost. Setting +the value to 0 disables reconnecting feature. + +@item @code{reconnect-intervals} (default: @code{'(1 2 4 8 16 32 64)}) +Defines a list of intervals in seconds to use in between attempts. If +the number of attempts defined in @var{reconnect-attempts} is bigger than +the list of intervals the last interval is repeated until the last attempt. + +@item @code{auto-enable?} (default: @code{#f}) +Defines option to enable all controllers when they are found. This includes +adapters present on start as well as adapters that are plugged in later on. + +@item @code{resume-delay} (default: @code{2}) +Audio devices that were disconnected due to suspend will be reconnected on +resume. @var{resume-delay} determines the delay between when the controller +resumes from suspend and a connection attempt is made. A longer delay is +better for better co-existence with Wi-Fi. The value is in seconds. + +@item @code{rssi-sampling-period} (default: @code{#xFF}) +Default RSSI Sampling Period. This is used when a client registers an +advertisement monitor and leaves the RSSISamplingPeriod unset. + +Possible values are: +@itemize @bullet +@item +@code{#x0}: Report all advertisements + +@item +@code{N =3D #xXX}: Report advertisements every N x 100 msec (range: #x01 t= o #xFE) + +@item +@code{#xFF}: Report only one advertisement per device during monitoring pe= riod. +@end itemize + +@end table +@end deftp + @defvr {Scheme Variable} gnome-keyring-service-type This is the type of the service that adds the @uref{https://wiki.gnome.org/Projects/GnomeKeyring, GNOME Keyring}. Its @@ -20811,7 +21253,6 @@ and ``passwd'' is with the value @code{passwd}. @end table @end deftp =20 =2D @node Sound Services @subsection Sound Services =20 diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index c6761ca784..76719dcba5 100644 =2D-- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -44,6 +44,7 @@ (define-module (gnu services desktop) #:use-module (gnu system) #:use-module (gnu system setuid) #:use-module (gnu system shadow) + #:use-module (gnu system uuid) #:use-module (gnu system pam) #:use-module (gnu packages glib) #:use-module (gnu packages admin) @@ -403,14 +404,380 @@ (define-record-type* bluetooth-configuration make-bluetooth-configuration bluetooth-configuration? (bluez bluetooth-configuration-bluez (default bluez)) =2D (auto-enable? bluetooth-configuration-auto-enable? (default #f))) + + ;;; [General] + (name bluetooth-configuration-name (default "BlueZ")) + (class bluetooth-configuration-class (default #x000000)) + (discoverable-timeout + bluetooth-configuration-discoverable-timeout (default 180)) + (always-pairable? bluetooth-configuration-always-pairable? (default #f)) + (pairable-timeout bluetooth-configuration-pairable-timeout (default 0)) + + ;;; MAYBE: Exclude into separate record-type? + (device-id bluetooth-configuration-device-id (default #f)) + (reverse-service-discovery? + bluetooth-configuration-reverse-service-discovery (default #t)) + (name-resolving? bluetooth-configuration-name-resolving? (default #t)) + (debug-keys? bluetooth-configuration-debug-keys? (default #f)) + + ;;; Possible values: + ;;; 'dual, 'bredr, 'le + (controller-mode bluetooth-configuration-controller-mode (default 'dual)) + + ;;; Possible values: + ;;; 'off, 'single, 'multiple + (multi-profile bluetooth-configuration-multi-profile (default 'off)) + (fast-connectable? bluetooth-configuration-fast-connectable? (default #f= )) + + ;;; Possible values: + ;;; for LE mode: 'off, 'network/on, 'device + ;;; for Dual mode: 'off, 'network/on', 'device, 'limited-network, 'limit= ed-device + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/= main.conf#n68 + (privacy bluetooth-configuration-privacy (default 'off)) + + ;;; Possible values: + ;;; 'never, 'confirm, 'always + (just-works-repairing + bluetooth-configuration-just-works-repairing (default 'never)) + (temporary-timeout bluetooth-configuration-temporary-timeout (default 30= )) + (refresh-discovery? bluetooth-configuration-refresh-discovery (default #= t)) + + ;;; Possible values: #t, #f, (uuid ) + ;;; Possible UUIDs: + ;;; d4992530-b9ec-469f-ab01-6c481c47da1c (BlueZ Experimental Debug) + ;;; 671b10b5-42c0-4696-9227-eb28d1b049d6 (BlueZ Experimental Simultaneou= s Central and Peripheral) + ;;; 15c0a148-c273-11ea-b3de-0242ac130004 (BlueZ Experimental LL privacy) + ;;; 330859bc-7506-492d-9370-9a6f0614037f (BlueZ Experimental Bluetooth Q= uality Report) + ;;; a6695ace-ee7f-4fb9-881a-5fac66c629af (BlueZ Experimental Offload Cod= ecs) + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/= main.conf#n110 + (experimental bluetooth-configuration-experimental (default #f)) + (remote-name-request-retry-delay + bluetooth-configuration-remote-name-request-retry-delay (default 300)) + + ;;; [BR] + (page-scan-type bluetooth-configuration-page-scan-type (default #f)) + (page-scan-interval bluetooth-configuration-page-scan-interval (default = #f)) + (page-scan-window bluetooth-configuration-page-scan-window (default #f)) + (inquiry-scan-type bluetooth-configuration-inquiry-scan-type (default #f= )) + (inquiry-scan-interval bluetooth-configuration-inquiry-scan-interval (de= fault #f)) + (inquiry-scan-window bluetooth-configuration-inquiry-scan-window (defaul= t #f)) + (link-supervision-timeout bluetooth-configuration-link-supervision-timeo= ut (default #f)) + (page-timeout bluetooth-configuration-page-timeout (default #f)) + (min-sniff-interval bluetooth-configuration-min-sniff-interval (default = #f)) + (max-sniff-interval bluetooth-configuration-max-sniff-interval (default = #f)) + + ;;; [LE] + (min-advertisement-interval + bluetooth-configuration-min-advertisement-interval (default #f)) + (max-advertisement-interval + bluetooth-configuration-max-advertisement-interval (default #f)) + (multi-advertisement-rotation-interval + bluetooth-configuration-multi-advertisement-rotation-interval (default = #f)) + (scan-interval-auto-connect + bluetooth-configuration-scan-interval-auto-connect (default #f)) + (scan-window-auto-connect + bluetooth-configuration-scan-window-auto-connect (default #f)) + (scan-interval-suspend + bluetooth-configuration-scan-interval-suspend (default #f)) + (scan-window-suspend + bluetooth-configuration-scan-window-suspend (default #f)) + (scan-interval-discovery + bluetooth-configuration-scan-interval-discovery (default #f)) + (scan-window-discovery + bluetooth-configuration-scan-window-discovery (default #f)) + (scan-interval-adv-monitor + bluetooth-configuration-scan-interval-adv-monitor (default #f)) + (scan-window-adv-monitor + bluetooth-configuration-scan-window-adv-monitor (default #f)) + (scan-interval-connect + bluetooth-configuration-scan-interval-connect (default #f)) + (scan-window-connect + bluetooth-configuration-scan-window-connect (default #f)) + (min-connection-interval + bluetooth-configuration-min-connection-interval (default #f)) + (max-connection-interval + bluetooth-configuration-max-connection-interval (default #f)) + (connection-latency + bluetooth-configuration-connection-latency (default #f)) + (connection-supervision-timeout + bluetooth-configuration-connection-supervision-timeout (default #f)) + (autoconnect-timeout + bluetooth-configuration-autoconnect-timeout (default #f)) + (adv-mon-allowlist-scan-duration + bluetooth-configuration-adv-mon-allowlist-scan-duration (default 300)) + (adv-mon-no-filter-scan-duration + bluetooth-configuration-adv-mon-no-filter-scan-duration (default 500)) + (enable-adv-mon-interleave-scan? + bluetooth-configuration-enable-adv-mon-interleave-scan (default #t)) + + ;;; [GATT] + ;;; Possible values: 'yes, 'no, 'always + (cache bluetooth-configuration-cache (default 'always)) + + ;;; Possible values: 7 ... 16, 0 (don't care) + (key-size bluetooth-configuration-key-size (default 0)) + + ;;; Possible values: 23 ... 517 + (exchange-mtu bluetooth-configuration-exchange-mtu (default 517)) + + ;;; Possible values: 1 ... 5 + (att-channels bluetooth-configuration-att-channels (default 3)) + + ;;; [AVDTP] + ;;; Possible values: 'basic, 'ertm + (session-mode bluetooth-configuration-session-mode (default 'basic)) + + ;;; Possible values: 'basic, 'streaming + (stream-mode bluetooth-configuration-stream-mode (default 'basic)) + + ;;; [Policy] + (reconnect-uuids bluetooth-configuration-reconnect-uuids (default '())) + (reconnect-attempts bluetooth-configuration-reconnect-attempts (default = 7)) + (reconnect-intervals bluetooth-configuration-reconnect-intervals + (default (list 1 2 4 8 16 32 64))) + (auto-enable? bluetooth-configuration-auto-enable? (default #f)) + (resume-delay bluetooth-configuration-resume-delay (default 2)) + + ;;; [AdvMon] + ;;; Possible values: + ;;; "0x00", "0xFF", + ;;; "N =3D 0x00" ... "N =3D 0xFF" + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/= main.conf#n286 + (rssi-sampling-period bluetooth-configuration-rssi-sampling-period + (default #xFF))) =20 (define (bluetooth-configuration-file config) "Return a configuration file for the systemd bluetooth service, as a str= ing." (string-append =2D "[Policy]\n" =2D "AutoEnable=3D" (bool (bluetooth-configuration-auto-enable? =2D config)))) + "[General]" + "\nName =3D " (bluetooth-configuration-name config) + "\nClass =3D " (string-append + "0x" + (format #f "~6,'0x" (bluetooth-configuration-class config= ))) + "\nDiscoverableTimeout =3D " (number->string + (bluetooth-configuration-discoverable-timeo= ut + config)) + "\nAlwaysPairable =3D " (bool (bluetooth-configuration-always-pairable? + config)) + "\nPairableTimeout =3D " (number->string + (bluetooth-configuration-pairable-timeout + config)) + (if (bluetooth-configuration-device-id config) + (string-append "\nDeviceID =3D " (bluetooth-configuration-device-id= config)) + "") + "\nReverseServiceDiscovery =3D " (bool + (bluetooth-configuration-reverse-servic= e-discovery + config)) + "\nNameResolving =3D " (bool (bluetooth-configuration-name-resolving? c= onfig)) + "\nDebugKeys =3D " (bool (bluetooth-configuration-debug-keys? config)) + "\nControllerMode =3D " (symbol->string + (bluetooth-configuration-controller-mode config)) + "\nMultiProfile =3D " (symbol->string (bluetooth-configuration-multi-pr= ofile + config)) + "\nFastConnectable =3D " (bool (bluetooth-configuration-fast-connectabl= e? config)) + "\nPrivacy =3D " (symbol->string (bluetooth-configuration-privacy confi= g)) + "\nJustWorksRepairing =3D " (symbol->string + (bluetooth-configuration-just-works-repairin= g config)) + "\nTemporaryTimeout =3D " (number->string + (bluetooth-configuration-temporary-timeout con= fig)) + "\nRefreshDiscovery =3D " (bool (bluetooth-configuration-refresh-discov= ery config)) + "\nExperimental =3D " (let ((experimental (bluetooth-configuration-expe= rimental config))) + (cond ((or (eq? experimental #t) + (eq? experimental #f)) (bool experimen= tal)) + ((list? experimental) + (string-join (map uuid->string experimenta= l) ",")))) + "\nRemoteNameRequestRetryDelay =3D " (number->string + (bluetooth-configuration-remote-nam= e-request-retry-delay + config)) + "\n[BR]" + (if (bluetooth-configuration-page-scan-type config) + (string-append + "\nPageScanType =3D " + (number->string (bluetooth-configuration-page-scan-type config))) + "") + (if (bluetooth-configuration-page-scan-interval config) + (string-append + "\nPageScanInterval =3D " + (number->string (bluetooth-configuration-page-scan-interval config= ))) + "") + (if (bluetooth-configuration-page-scan-window config) + (string-append + "\nPageScanWindow =3D " + (number->string (bluetooth-configuration-page-scan-window config))) + "") + (if (bluetooth-configuration-inquiry-scan-type config) + (string-append + "\nInquiryScanType =3D " + (number->string (bluetooth-configuration-inquiry-scan-type config)= )) + "") + (if (bluetooth-configuration-inquiry-scan-interval config) + (string-append + "\nInquiryScanInterval =3D " + (number->string (bluetooth-configuration-inquiry-scan-interval con= fig))) + "") + (if (bluetooth-configuration-inquiry-scan-window config) + (string-append + "\nInquiryScanWindow =3D " + (number->string (bluetooth-configuration-inquiry-scan-window confi= g))) + "") + (if (bluetooth-configuration-link-supervision-timeout config) + (string-append + "\nLinkSupervisionTimeout =3D " + (number->string (bluetooth-configuration-link-supervision-timeout = config))) + "") + (if (bluetooth-configuration-page-timeout config) + (string-append + "\nPageTimeout =3D " + (number->string (bluetooth-configuration-page-timeout config))) + "") + (if (bluetooth-configuration-min-sniff-interval config) + (string-append + "\nMinSniffInterval =3D " + (number->string (bluetooth-configuration-min-sniff-interval config= ))) + "") + (if (bluetooth-configuration-max-sniff-interval config) + (string-append + "\nMaxSniffInterval =3D " + (number->string (bluetooth-configuration-max-sniff-interval config= ))) + "") + + "\n[LE]" + (if (bluetooth-configuration-min-advertisement-interval config) + (string-append + "\nMinAdvertisementInterval =3D " + (number->string (bluetooth-configuration-min-advertisement-interva= l config))) + "") + (if (bluetooth-configuration-max-advertisement-interval config) + (string-append + "\nMaxAdvertisementInterval =3D " + (number->string (bluetooth-configuration-max-advertisement-interva= l config))) + "") + (if (bluetooth-configuration-multi-advertisement-rotation-interval conf= ig) + (string-append + "\nMultiAdvertisementRotationInterval =3D " + (number->string + (bluetooth-configuration-multi-advertisement-rotation-interval co= nfig))) + "") + (if (bluetooth-configuration-scan-interval-auto-connect config) + (string-append + "\nScanIntervalAutoConnect =3D " + (number->string (bluetooth-configuration-scan-interval-auto-connec= t config))) + "") + (if (bluetooth-configuration-scan-window-auto-connect config) + (string-append + "\nScanWindowAutoConnect =3D " + (number->string (bluetooth-configuration-scan-window-auto-connect = config))) + "") + (if (bluetooth-configuration-scan-interval-suspend config) + (string-append + "\nScanIntervalSuspend =3D " + (number->string (bluetooth-configuration-scan-interval-suspend con= fig))) + "") + (if (bluetooth-configuration-scan-window-suspend config) + (string-append + "\nScanWindowSuspend =3D " + (number->string (bluetooth-configuration-scan-window-suspend confi= g))) + "") + (if (bluetooth-configuration-scan-interval-discovery config) + (string-append + "\nScanIntervalDiscovery =3D " + (number->string (bluetooth-configuration-scan-interval-discovery c= onfig))) + "") + (if (bluetooth-configuration-scan-window-discovery config) + (string-append + "\nScanWindowDiscovery =3D " + (number->string (bluetooth-configuration-scan-window-discovery con= fig))) + "") + (if (bluetooth-configuration-scan-interval-adv-monitor config) + (string-append + "\nScanIntervalAdvMonitor =3D " + (number->string (bluetooth-configuration-scan-interval-adv-monitor= config))) + "") + (if (bluetooth-configuration-scan-window-adv-monitor config) + (string-append + "\nScanWindowAdvMonitor =3D " + (number->string (bluetooth-configuration-scan-window-adv-monitor c= onfig))) + "") + (if (bluetooth-configuration-scan-interval-connect config) + (string-append + "\nScanIntervalConnect =3D " + (number->string (bluetooth-configuration-scan-interval-connect con= fig))) + "") + (if (bluetooth-configuration-scan-window-connect config) + (string-append + "\nScanWindowConnect =3D " + (number->string (bluetooth-configuration-scan-window-connect confi= g))) + "") + (if (bluetooth-configuration-min-connection-interval config) + (string-append + "\nMinConnectionInterval =3D " + (number->string (bluetooth-configuration-min-connection-interval c= onfig))) + "") + (if (bluetooth-configuration-max-connection-interval config) + (string-append + "\nMaxConnectionInterval =3D " + (number->string (bluetooth-configuration-max-connection-interval c= onfig))) + "") + (if (bluetooth-configuration-connection-latency config) + (string-append + "\nConnectionLatency =3D " + (number->string (bluetooth-configuration-connection-latency config= ))) + "") + (if (bluetooth-configuration-connection-supervision-timeout config) + (string-append + "\nConnectionSupervisionTimeout =3D " + (number->string (bluetooth-configuration-connection-supervision-ti= meout config))) + "") + (if (bluetooth-configuration-autoconnect-timeout config) + (string-append + "\nAutoconnecttimeout =3D " + (number->string (bluetooth-configuration-autoconnect-timeout confi= g))) + "") + "\nAdvMonAllowlistScanDuration =3D " (number->string + (bluetooth-configuration-adv-mon-al= lowlist-scan-duration + config)) + "\nAdvMonNoFilterScanDuration =3D " (number->string + (bluetooth-configuration-adv-mon-no-= filter-scan-duration + config)) + "\nEnableAdvMonInterleaveScan =3D " (number->string + (if (eq? #t + (bluetooth-configuration-en= able-adv-mon-interleave-scan + config)) + 1 0)) +=20=20=20 + "\n[GATT]" + "\nCache =3D " (symbol->string (bluetooth-configuration-cache config)) + "\nKeySize =3D " (number->string (bluetooth-configuration-key-size conf= ig)) + "\nExchangeMTU =3D " (number->string (bluetooth-configuration-exchange-= mtu config)) + "\nChannels =3D " (number->string (bluetooth-configuration-att-channels= config)) + + "\n[AVDTP]" + "\nSessionMode =3D " (symbol->string (bluetooth-configuration-session-m= ode config)) + "\nStreamMode =3D " (symbol->string (bluetooth-configuration-stream-mod= e config)) + + "\n[Policy]" + (let ((uuids (bluetooth-configuration-reconnect-uuids config))) + (if (not (eq? '() uuids)) + (string-append + "\nReconnectUUIDs =3D " + (string-join (map uuid->string uuids) ",")) + "")) + "\nReconnectAttempts =3D " (number->string + (bluetooth-configuration-reconnect-attempts c= onfig)) + "\nReconnectIntervals =3D " (string-join + (map number->string + (bluetooth-configuration-reconnect-inte= rvals + config)) + ",") + "\nAutoEnable =3D " (bool (bluetooth-configuration-auto-enable? + config)) + "\nResumeDelay =3D " (number->string (bluetooth-configuration-resume-de= lay config)) + + "\n[AdvMon]" + "\nRSSISamplingPeriod =3D " (string-append + "0x" + (format #f "~2,'0x" + (bluetooth-configuration-rssi-sampli= ng-period config))))) =20 (define (bluetooth-directory config) (computed-file "etc-bluetooth" =2D-=20 2.34.0 Patch with applied fixed suggested by Liliana. This contains documentation as well as implementation fixes if not stated otherwise. Changes: =2D Changed `bluetooth-configuration-class` to type number =2D Changed `bluetooth-configuration-experimental` to `#f`/`#t`/list of UUIDs =2D Changed `bluetooth-configuration-enable-adv-mon-interleave-scan` to boolean =2D Changed `key-size` doc to `7 <=3D N <=3D 16` =2D Changed `exchange-mtu` doc to `23 <=3D N <=3D 517` =2D Changed `channels` doc to `2 <=3D N <=3D 5` =2D Changed `bluetooth-configuration-reconnect-uuids` to list of UUIDs =2D Changed `bluetooth-configuration-rssi-sampling-period` to type number =2D-=20 Best regards / Mit freundlichen Gr=C3=BC=C3=9Fen, Demis Balbach --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJCBAEBCgAsFiEEz9zHmXzCRksxyCGU8X3bmMw8QFwFAmG/YMoOHGRiQG1pbmlr bi54eXoACgkQ8X3bmMw8QFzz8BAAkxCGrNl1FPOqGU4BLD0qiGToe+l9VWnENW8M hhVI+EDNhwwzImpcJCncHMxzIUDG9WWD80nVeOL/Txn8THIy/+3tc6xqBIXLkXm4 vYBCCpHvxat1JmIjSCJXg2WG66JuDq1+84Nuvi0f0F/RQOgrV9Jz88OJ38CQTuR4 0PvLAFVvEixD1YNjAQTStzwHuwao/85sX6Uh73a8F1J3xVjQx/7qGdT2/SJe6l9V vt7NgNWJw2/EI4gA27ul5SNC4EoXotGoQ2Pic9JhzgoaGZ0kIcPxb/pgVaclmDlO 7bC+dRhVhbetnpb5UmT/w+koaZq2OileIrWCZnA1Z6MOtFRi37PUyjOFmz4ngHH3 rrg6TETTkiVE2p3qMYA/EJoINJTDB4wtlK6GB+MUo9sMubJSshch4S7YPJmSxaiB LMali7wLx7/8mhEY/ISPpyyHv7Gk6rPPO9WC7kkA0up623eRxWm8ccugja+x83FW ncyeL573VQs8NLmJQq+zsnrFnoicyS6m4j1XPRdUb8hlGAYsCKJ3jLP4VOhg0/Km PSgTYnbenHcWubqyRAEo2KDhcNmVsJtwmFIrWpcfhJKiyDpb85BDlepOFEo6RAah v9dwQNiTN9M3zn7floN/+Phk/1v7MShvaSJ3apM7VNwF+Gaxn8YY5+q162AGHGcg a37OA1o= =qSYp -----END PGP SIGNATURE----- --=-=-=-- From unknown Sat Sep 06 20:53:51 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#52470] [PATCH] services: bluetooth: Add missing config parameters Resent-From: Demis Balbach Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sat, 05 Feb 2022 10:23:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 52470 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 52470@debbugs.gnu.org Received: via spool by 52470-submit@debbugs.gnu.org id=B52470.16440565655304 (code B ref 52470); Sat, 05 Feb 2022 10:23:01 +0000 Received: (at 52470) by debbugs.gnu.org; 5 Feb 2022 10:22:45 +0000 Received: from localhost ([127.0.0.1]:33789 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGIDN-0001NU-4b for submit@debbugs.gnu.org; Sat, 05 Feb 2022 05:22:45 -0500 Received: from mout-p-103.mailbox.org ([80.241.56.161]:51278) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nGIDL-0001N6-F0 for 52470@debbugs.gnu.org; Sat, 05 Feb 2022 05:22:43 -0500 Received: from smtp1.mailbox.org (smtp1.mailbox.org [80.241.60.240]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-103.mailbox.org (Postfix) with ESMTPS id 4JrT4D6CmWz9sRJ for <52470@debbugs.gnu.org>; Sat, 5 Feb 2022 11:22:36 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minikn.xyz; s=MBO0001; t=1644056555; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=E6MnqXxmzklGgWaJL2YKy26v7hOnXaFocpliColmJbg=; b=wbVdhN4KBVPsSz5DacJPyu9hSb9K12Ddo+JOKZqrRhAzelHKshJ2IgrxhlhFym+LX+SIdD 0v8l2uwymoJIOzd1Yxt3zc7fYq5Rw5ecr3V4b4YjcUni3EwrSaYZTqsFzBhqgzUWdtXUFQ KbXPVfgFd87Adw716TtaFfxIq26BMtREWBYJNgQtKXVDPOokrILW7vtHqsu3maQJVULZPs 2V9JvKhpWKyfzhqj2U+/WUqxYTYGx+pXax61Bn+Cslos5h85/86+HiwrxRzVnJPIVHIRw+ ApO0xQy9SvydNKz1cOB/+CEBof5rsjMwlTcWQxoJnYT3pVPuZUdDsHWOALn6+g== From: Demis Balbach In-Reply-To: <87zgow8s39.fsf@minikn.xyz> References: <87zgow8s39.fsf@minikn.xyz> Date: Sat, 05 Feb 2022 11:22:32 +0100 Message-ID: <877da962af.fsf@minikn.xyz> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: 1.4 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Any news on this? -- Best regards / Mit freundlichen =?UTF-8?Q?Gr=C3=BC=C3=9Fen,?= Demis Balbach Content analysis details: (1.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [80.241.56.161 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [80.241.56.161 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record 1.6 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: minikn.xyz (xyz)] 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD -0.0 T_SCC_BODY_TEXT_LINE No description available. X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.4 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Any news on this? -- Best regards / Mit freundlichen =?UTF-8?Q?Gr=C3=BC=C3=9Fen,?= Demis Balbach Content analysis details: (1.4 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [80.241.56.161 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [80.241.56.161 listed in wl.mailspike.net] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record 1.6 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: minikn.xyz (xyz)] 1.0 BULK_RE_SUSP_NTLD Precedence bulk and RE: from a suspicious TLD 0.5 FROM_SUSPICIOUS_NTLD From abused NTLD -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Any news on this? =2D-=20 Best regards / Mit freundlichen Gr=C3=BC=C3=9Fen, Demis Balbach --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJCBAEBCgAsFiEEz9zHmXzCRksxyCGU8X3bmMw8QFwFAmH+T+gOHGRiQG1pbmlr bi54eXoACgkQ8X3bmMw8QFzeixAAmihwZNdJRzSpzBLLUiCmftOcLPRXTEj2v8TJ Kj3NVVVVw9TglRpws8WyZ/AOfAJ/RW6dla9luLEd56vaRMvjCYgnujT7fDLPy5q3 LdVXHi/s45MjUj6gb0t3Czj4fpjixWNF5y8mecZsFDCmyNjBIVoi+HCjkvUpkL5F LS+s6xJzI6unhxyltHyAogQ/OglN/GyvLDrKohxL5jOOy8Rr2qvMHSeSI5g3SzQw eKDQ+CkMvsP9Pqfb0z8eMKwibNib+E2Ydp2NYz7kMbYkclZVXTqW/cuFcnPAEOvL uwiNuszmR9SGCx/Kyahb2STLsO59lzoyVPNhLIOhLCMOT5RkcxSl5AvfJlW795Jv 9R8pB4zcHgkYD+KnmKY9t5AXaMte6AoTFGxDdh44YKkWlfSRqsSw5kEETpBaLiFX F1yCQO5rBgo8PLrgJTA4j/3iKk0NO4iRiMrQ2cGMGhll7O4Ep9I5+ae/Cub73OQf atTDShAxNjEftMQ2UXFbf/zqapBp6nCPWoWHsPPunMt+0R3/YY/R7UKn4KaImn53 86poUq8475XwNiXPidG7tsf4mo+MZHqesLHV5SNA1DjeR7Iyn4dUY5ca2TWdcqYP Zo0CO7C2o2hwIsGOH5tjZg2fbLzef9MNlTFeNE1Z/qvA/EqklX3aE0ThHd/3IvD3 UH3ifYY= =Bbp5 -----END PGP SIGNATURE----- --=-=-=-- From unknown Sat Sep 06 20:53:51 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Demis Balbach Subject: bug#52470: closed (Re: bug#52470: [PATCH] services: bluetooth: Add missing config parameters) Message-ID: References: <87y21i21do.fsf_-_@gnu.org> <20211213192014.8386-1-db@minikn.xyz> X-Gnu-PR-Message: they-closed 52470 X-Gnu-PR-Package: guix-patches X-Gnu-PR-Keywords: patch Reply-To: 52470@debbugs.gnu.org Date: Wed, 09 Mar 2022 22:44:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1646865842-21933-1" This is a multi-part message in MIME format... ------------=_1646865842-21933-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #52470: [PATCH] services: bluetooth: Add missing config parameters which was filed against the guix-patches package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 52470@debbugs.gnu.org. --=20 52470: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D52470 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1646865842-21933-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 52470-done) by debbugs.gnu.org; 9 Mar 2022 22:43:26 +0000 Received: from localhost ([127.0.0.1]:32804 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nS51i-0005gk-DF for submit@debbugs.gnu.org; Wed, 09 Mar 2022 17:43:26 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53824) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nS51g-0005gS-7k for 52470-done@debbugs.gnu.org; Wed, 09 Mar 2022 17:43:24 -0500 Received: from [2001:470:142:3::e] (port=45594 helo=fencepost.gnu.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nS51a-0003cB-N3; Wed, 09 Mar 2022 17:43:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=OE8iod6O1jHmY7+d+5F+Or19AxrtmNyba+v9ZGtGxUk=; b=e73tfjuhrPEw1Nq60v79 +OpNCfSnGeYjaDDRpDJflBsp0HAKe/lBuAgyQ2gztJB2G9cDH2LnkuFJTiyPnUiAT0fQOOXhBSZuN 9vVw4/zakQiORfXAipggHTzUuwSOdkYf54SxsKXYg5umTObRK6uV5I2dP5TqgiyaJHnKCSPkeiWkg UwIXnkBH/Az2eT6V+tDPlUyeaHL+KZjUEFXPiy2/1kQ6rkJZWD0y0og8Ib3LFZOv3ckD+/hXw5lmD 9BwQgwQZMQFRvVHvfLHEACMqarCq3owhuBVdlIGSAuoDRD74h+mm3Dxyg4vUnME5JgP7JS7Kp4vCG lVoEEvlxUi5chg==; Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201]:58439 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nS51a-0007ZJ-9m; Wed, 09 Mar 2022 17:43:18 -0500 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Demis Balbach Subject: Re: bug#52470: [PATCH] services: bluetooth: Add missing config parameters References: <20211213192014.8386-1-db@minikn.xyz> <87zgow8s39.fsf@minikn.xyz> Date: Wed, 09 Mar 2022 23:43:15 +0100 In-Reply-To: <87zgow8s39.fsf@minikn.xyz> (Demis Balbach's message of "Sun, 19 Dec 2021 17:41:46 +0100") Message-ID: <87y21i21do.fsf_-_@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 52470-done Cc: Josselin Poiret , Liliana Marie Prikler , 52470-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) Hi Demis, Demis Balbach skribis: > --- > doc/guix.texi | 443 ++++++++++++++++++++++++++++++++++++++- > gnu/services/desktop.scm | 375 ++++++++++++++++++++++++++++++++- > 2 files changed, 813 insertions(+), 5 deletions(-) Great job! I haven=E2=80=99t tested it with actual Bluetooth hardware but it LGTM, so I went ahead and committed it. Apologies for the delay! The documentation work is much welcome. Perhaps it would be interesting to add a short example of =E2=80=98bluetooth-configuration=E2=80=99 with a = sentence explaining what it does=E2=80=94it=E2=80=99s often easier to get started wi= th an example. Anyway, thank you for the hard work, and thanks Liliana and Josselin for reviewing! Ludo=E2=80=99. ------------=_1646865842-21933-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 13 Dec 2021 19:21:02 +0000 Received: from localhost ([127.0.0.1]:56861 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mwqsf-0002Xn-0I for submit@debbugs.gnu.org; Mon, 13 Dec 2021 14:21:01 -0500 Received: from lists.gnu.org ([209.51.188.17]:55802) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mwqsc-0002Xb-3z for submit@debbugs.gnu.org; Mon, 13 Dec 2021 14:20:59 -0500 Received: from eggs.gnu.org ([209.51.188.92]:35196) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mwqsb-0007fm-VY for guix-patches@gnu.org; Mon, 13 Dec 2021 14:20:57 -0500 Received: from mout-p-202.mailbox.org ([80.241.56.172]:32574) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_CHACHA20_POLY1305:256) (Exim 4.90_1) (envelope-from ) id 1mwqsY-0005vh-R8 for guix-patches@gnu.org; Mon, 13 Dec 2021 14:20:57 -0500 Received: from smtp102.mailbox.org (smtp102.mailbox.org [IPv6:2001:67c:2050:105:465:1:3:0]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-202.mailbox.org (Postfix) with ESMTPS id 4JCWZ251z0zQkhL; Mon, 13 Dec 2021 20:20:42 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minikn.xyz; s=MBO0001; t=1639423240; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=Wj3L+kqMflTTCUqGnsN494XeV4BxXiGhPF5YhWZzh24=; b=K0kNsFVOPNSmpKqtnswAIuSUEy7IHGEi2mxTerk3gpIWNyh5Ywif61Xs+KBzSFWRMft98s /Hh3T6JAQAbQn+hA7UYMsiKFNSuUrdvAp6yKYNx0KKUOR+kUP34k1X3WLM5UON9X95Oqq4 LXfT7g2PqAHPVB8DazXheIXD+6SEtt6Kjm9O4kDfIaCsTAUpYnguAIOYpMon3bUH7Uip4w sF/R/NibowMLsHKAG/x5FDxksQlmNCeAiG1paFgfVtVuVkDUVEaijlFIXU2d3yxUkR6EUy 15wGP3gaF19rCNhR+ib5CnpBt1MtAyeoBJSXjQUZoGe7H2sg4gKOQkD83K3K+w== From: Demis Balbach To: guix-patches@gnu.org Subject: [PATCH] services: bluetooth: Add missing config parameters Date: Mon, 13 Dec 2021 20:20:14 +0100 Message-Id: <20211213192014.8386-1-db@minikn.xyz> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: none client-ip=80.241.56.172; envelope-from=db@minikn.xyz; helo=mout-p-202.mailbox.org X-Spam_score_int: 0 X-Spam_score: -0.0 X-Spam_bar: / X-Spam_report: (-0.0 / 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, FROM_SUSPICIOUS_NTLD=0.498, FROM_SUSPICIOUS_NTLD_FP=0.294, PDS_OTHER_BAD_TLD=1.997, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: submit Cc: Demis Balbach X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) --- gnu/services/desktop.scm | 332 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 328 insertions(+), 4 deletions(-) diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 64d0e85301..23b730d7d4 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -402,14 +402,338 @@ (define-record-type* bluetooth-configuration make-bluetooth-configuration bluetooth-configuration? (bluez bluetooth-configuration-bluez (default bluez)) - (auto-enable? bluetooth-configuration-auto-enable? (default #f))) + + ;;; [General] + (name bluetooth-configuration-name (default "BlueZ")) + (class bluetooth-configuration-class (default "0x000000")) + (discoverable-timeout + bluetooth-configuration-discoverable-timeout (default 180)) + (always-pairable? bluetooth-configuration-always-pairable? (default #f)) + (pairable-timeout bluetooth-configuration-pairable-timeout (default 0)) + (device-id bluetooth-configuration-device-id (default "")) + (reverse-service-discovery? + bluetooth-configuration-reverse-service-discovery (default #t)) + (name-resolving? bluetooth-configuration-name-resolving? (default #t)) + (debug-keys? bluetooth-configuration-debug-keys? (default #f)) + + ;;; Possible values: + ;;; 'dual, 'bredr, 'le + (controller-mode bluetooth-configuration-controller-mode (default 'dual)) + + ;;; Possible values: + ;;; 'off, 'single, 'multiple + (multi-profile bluetooth-configuration-multi-profile (default 'off)) + (fast-connectable? bluetooth-configuration-fast-connectable? (default #f)) + + ;;; Possible values: + ;;; for LE mode: 'off, 'network/on, 'device + ;;; for Dual mode: 'off, 'network/on', 'device, 'limited-network, 'limited-device + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n68 + (privacy bluetooth-configuration-privacy (default 'off)) + + ;;; Possible values: + ;;; 'never, 'confirm, 'always + (just-works-repairing + bluetooth-configuration-just-works-repairing (default 'never)) + (temporary-timeout bluetooth-configuration-temporary-timeout (default 30)) + (refresh-discovery? bluetooth-configuration-refresh-discovery (default #t)) + + ;;; Possible values: 'true, 'false, + ;;; Possible UUIDs: + ;;; d4992530-b9ec-469f-ab01-6c481c47da1c (BlueZ Experimental Debug) + ;;; 671b10b5-42c0-4696-9227-eb28d1b049d6 (BlueZ Experimental Simultaneous Central and Peripheral) + ;;; 15c0a148-c273-11ea-b3de-0242ac130004 (BlueZ Experimental LL privacy) + ;;; 330859bc-7506-492d-9370-9a6f0614037f (BlueZ Experimental Bluetooth Quality Report) + ;;; a6695ace-ee7f-4fb9-881a-5fac66c629af (BlueZ Experimental Offload Codecs) + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n110 + (experimental bluetooth-configuration-experimental (default 'false)) + (remote-name-request-retry-delay + bluetooth-configuration-remote-name-request-retry-delay (default 300)) + + ;;; [BR] + (page-scan-type bluetooth-configuration-page-scan-type (default -1)) + (page-scan-interval bluetooth-configuration-page-scan-interval (default -1)) + (page-scan-window bluetooth-configuration-page-scan-window (default 'nil)) + (inquiry-scan-type bluetooth-configuration-inquiry-scan-type (default 'nil)) + (inquiry-scan-interval bluetooth-configuration-inquiry-scan-interval (default -1)) + (inquiry-scan-window bluetooth-configuration-inquiry-scan-window (default 'nil)) + (link-supervision-timeout bluetooth-configuration-link-supervision-timeout (default -1)) + (page-timeout bluetooth-configuration-page-timeout (default -1)) + (min-sniff-interval bluetooth-configuration-min-sniff-interval (default -1)) + (max-sniff-interval bluetooth-configuration-max-sniff-interval (default -1)) + + ;;; [LE] + (min-advertisement-interval + bluetooth-configuration-min-advertisement-interval (default -1)) + (max-advertisement-interval + bluetooth-configuration-max-advertisement-interval (default -1)) + (multi-advertisement-rotation-interval + bluetooth-configuration-multi-advertisement-rotation-interval (default -1)) + (scan-interval-auto-connect + bluetooth-configuration-scan-interval-auto-connect (default 'nil)) + (scan-window-auto-connect + bluetooth-configuration-scan-window-auto-connect (default 'nil)) + (scan-interval-suspend + bluetooth-configuration-scan-interval-suspend (default 'nil)) + (scan-window-suspend + bluetooth-configuration-scan-window-suspend (default 'nil)) + (scan-interval-discovery + bluetooth-configuration-scan-interval-discovery (default 'nil)) + (scan-window-discovery + bluetooth-configuration-scan-window-discovery (default 'nil)) + (scan-interval-adv-monitor + bluetooth-configuration-scan-interval-adv-monitor (default 'nil)) + (scan-window-adv-monitor + bluetooth-configuration-scan-window-adv-monitor (default 'nil)) + (scan-interval-connect + bluetooth-configuration-scan-interval-connect (default 'nil)) + (scan-window-connect + bluetooth-configuration-scan-window-connect (default 'nil)) + (min-connection-interval + bluetooth-configuration-min-connection-interval (default -1)) + (max-connection-interval + bluetooth-configuration-max-connection-interval (default -1)) + (connection-latency + bluetooth-configuration-connection-latency (default -1)) + (connection-supervision-timeout + bluetooth-configuration-connection-supervision-timeout (default -1)) + (autoconnect-timeout + bluetooth-configuration-autoconnect-timeout (default -1)) + (adv-mon-allowlist-scan-duration + bluetooth-configuration-adv-mon-allowlist-scan-duration (default 300)) + (adv-mon-no-filter-scan-duration + bluetooth-configuration-adv-mon-no-filter-scan-duration (default 500)) + (enable-adv-mon-interleave-scan + bluetooth-configuration-enable-adv-mon-interleave-scan (default 1)) + + ;;; [GATT] + ;;; Possible values: 'yes, 'no, 'always + (cache bluetooth-configuration-cache (default 'always)) + + ;;; Possible values: 7 ... 16, 0 (don't care) + (key-size bluetooth-configuration-key-size (default 0)) + + ;;; Possible values: 23 ... 517 + (exchange-mtu bluetooth-configuration-exchange-mtu (default 517)) + + ;;; Possible values: 1 ... 5 + (att-channels bluetooth-configuration-att-channels (default 3)) + + ;;; [AVDTP] + ;;; Possible values: 'basic, 'ertm + (session-mode bluetooth-configuration-session-mode (default 'basic)) + + ;;; Possible values: 'basic, 'streaming + (stream-mode bluetooth-configuration-stream-mode (default 'basic)) + + ;;; [Policy] + (reconnect-uuids bluetooth-configuration-reconnect-uuids (default '())) + (reconnect-attempts bluetooth-configuration-reconnect-attempts (default 7)) + (reconnect-intervals bluetooth-configuration-reconnect-intervals + (default (list 1 2 4 8 16 32 64))) + (auto-enable? bluetooth-configuration-auto-enable? (default #f)) + (resume-delay bluetooth-configuration-resume-delay (default 2)) + + ;;; [AdvMon] + ;;; Possible values: + ;;; "0x00", "0xFF", + ;;; "N = 0x00" ... "N = 0xFF" + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n286 + (rssi-sampling-period bluetooth-configuration-rssi-sampling-period + (default "0xFF"))) (define (bluetooth-configuration-file config) "Return a configuration file for the systemd bluetooth service, as a string." (string-append - "[Policy]\n" - "AutoEnable=" (bool (bluetooth-configuration-auto-enable? - config)))) + "[General]" + "\nName = " (bluetooth-configuration-name config) + "\nClass = " (bluetooth-configuration-class config) + "\nDiscoverableTimeout = " (number->string + (bluetooth-configuration-discoverable-timeout + config)) + "\nAlwaysPairable = " (bool (bluetooth-configuration-always-pairable? + config)) + "\nPairableTimeout = " (number->string + (bluetooth-configuration-pairable-timeout + config)) + (if (not (string-null? (bluetooth-configuration-device-id config))) + (string-append "\nDeviceID = " (bluetooth-configuration-device-id config)) + "") + "\nReverseServiceDiscovery = " (bool + (bluetooth-configuration-reverse-service-discovery + config)) + "\nNameResolving = " (bool (bluetooth-configuration-name-resolving? config)) + "\nDebugKeys = " (bool (bluetooth-configuration-debug-keys? config)) + "\nControllerMode = " (symbol->string + (bluetooth-configuration-controller-mode config)) + "\nMultiProfile = " (symbol->string (bluetooth-configuration-multi-profile + config)) + "\nFastConnectable = " (bool (bluetooth-configuration-fast-connectable? config)) + "\nPrivacy = " (symbol->string (bluetooth-configuration-privacy config)) + "\nJustWorksRepairing = " (symbol->string + (bluetooth-configuration-just-works-repairing config)) + "\nTemporaryTimeout = " (number->string + (bluetooth-configuration-temporary-timeout config)) + "\nRefreshDiscovery = " (bool (bluetooth-configuration-refresh-discovery config)) + "\nExperimental = " (symbol->string (bluetooth-configuration-experimental config)) + "\nRemoteNameRequestRetryDelay = " (number->string + (bluetooth-configuration-remote-name-request-retry-delay + config)) + "\n[BR]" + (if (not (eq? -1 (bluetooth-configuration-page-scan-type config))) + (string-append + "\nPageScanType = " + (number->string (bluetooth-configuration-page-scan-type config))) "") + (if (not (eq? -1 (bluetooth-configuration-page-scan-interval config))) + (string-append + "\nPageScanInterval = " + (number->string (bluetooth-configuration-page-scan-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-page-scan-window config))) + (string-append + "\nPageScanWindow = " + (number->string (bluetooth-configuration-page-scan-window config))) "") + (if (not (eq? -1 (bluetooth-configuration-inquiry-scan-type config))) + (string-append + "\nInquiryScanType = " + (number->string (bluetooth-configuration-inquiry-scan-type config))) "") + (if (not (eq? -1 (bluetooth-configuration-inquiry-scan-interval config))) + (string-append + "\nInquiryScanInterval = " + (number->string (bluetooth-configuration-inquiry-scan-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-inquiry-scan-window config))) + (string-append + "\nInquiryScanWindow = " + (number->string (bluetooth-configuration-inquiry-scan-window config))) "") + (if (not (eq? -1 (bluetooth-configuration-link-supervision-timeout config))) + (string-append + "\nLinkSupervisionTimeout = " + (number->string (bluetooth-configuration-link-supervision-timeout config))) "") + (if (not (eq? -1 (bluetooth-configuration-page-timeout config))) + (string-append + "\nPageTimeout = " + (number->string (bluetooth-configuration-page-timeout config))) "") + (if (not (eq? -1 (bluetooth-configuration-min-sniff-interval config))) + (string-append + "\nMinSniffInterval = " + (number->string (bluetooth-configuration-min-sniff-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-max-sniff-interval config))) + (string-append + "\nMaxSniffInterval = " + (number->string (bluetooth-configuration-max-sniff-interval config))) "") + + "\n[LE]" + (if (not (eq? -1 (bluetooth-configuration-min-advertisement-interval config))) + (string-append + "\nMinAdvertisementInterval = " + (number->string (bluetooth-configuration-min-advertisement-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-max-advertisement-interval config))) + (string-append + "\nMaxAdvertisementInterval = " + (number->string (bluetooth-configuration-max-advertisement-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-multi-advertisement-rotation-interval config))) + (string-append + "\nMultiAdvertisementRotationInterval = " + (number->string + (bluetooth-configuration-multi-advertisement-rotation-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-auto-connect config))) + (string-append + "\nScanIntervalAutoConnect = " + (number->string (bluetooth-configuration-scan-interval-auto-connect config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-auto-connect config))) + (string-append + "\nScanWindowAutoConnect = " + (number->string (bluetooth-configuration-scan-window-auto-connect config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-suspend config))) + (string-append + "\nScanIntervalSuspend = " + (number->string (bluetooth-configuration-scan-interval-suspend config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-suspend config))) + (string-append + "\nScanWindowSuspend = " + (number->string (bluetooth-configuration-scan-window-suspend config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-discovery config))) + (string-append + "\nScanIntervalDiscovery = " + (number->string (bluetooth-configuration-scan-interval-discovery config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-discovery config))) + (string-append + "\nScanWindowDiscovery = " + (number->string (bluetooth-configuration-scan-window-discovery config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-adv-monitor config))) + (string-append + "\nScanIntervalAdvMonitor = " + (number->string (bluetooth-configuration-scan-interval-adv-monitor config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-adv-monitor config))) + (string-append + "\nScanWindowAdvMonitor = " + (number->string (bluetooth-configuration-scan-window-adv-monitor config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-interval-connect config))) + (string-append + "\nScanIntervalConnect = " + (number->string (bluetooth-configuration-scan-interval-connect config))) "") + (if (not (eq? -1 (bluetooth-configuration-scan-window-connect config))) + (string-append + "\nScanWindowConnect = " + (number->string (bluetooth-configuration-scan-window-connect config))) "") + (if (not (eq? -1 (bluetooth-configuration-min-connection-interval config))) + (string-append + "\nMinConnectionInterval = " + (number->string (bluetooth-configuration-min-connection-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-max-connection-interval config))) + (string-append + "\nMaxConnectionInterval = " + (number->string (bluetooth-configuration-max-connection-interval config))) "") + (if (not (eq? -1 (bluetooth-configuration-connection-latency config))) + (string-append + "\nConnectionLatency = " + (number->string (bluetooth-configuration-connection-latency config))) "") + (if (not (eq? -1 (bluetooth-configuration-connection-supervision-timeout config))) + (string-append + "\nConnectionSupervisionTimeout = " + (number->string (bluetooth-configuration-connection-supervision-timeout config))) "") + (if (not (eq? -1 (bluetooth-configuration-autoconnect-timeout config))) + (string-append + "\nAutoconnecttimeout = " + (number->string (bluetooth-configuration-autoconnect-timeout config))) "") + + "\nAdvMonAllowlistScanDuration = " (number->string + (bluetooth-configuration-adv-mon-allowlist-scan-duration + config)) + "\nAdvMonNoFilterScanDuration = " (number->string + (bluetooth-configuration-adv-mon-no-filter-scan-duration + config)) + "\nEnableAdvMonInterleaveScan = " (number->string + (bluetooth-configuration-enable-adv-mon-interleave-scan + config)) + + "\n[GATT]" + "\nCache = " (symbol->string (bluetooth-configuration-cache config)) + "\nKeySize = " (number->string (bluetooth-configuration-key-size config)) + "\nExchangeMTU = " (number->string (bluetooth-configuration-exchange-mtu config)) + "\nChannels = " (number->string (bluetooth-configuration-att-channels config)) + + "\n[AVDTP]" + "\nSessionMode = " (symbol->string (bluetooth-configuration-session-mode config)) + "\nStreamMode = " (symbol->string (bluetooth-configuration-stream-mode config)) + + "\n[Policy]" + (if (not (eq? '() (bluetooth-configuration-reconnect-uuids config))) + (string-append + "\nReconnectUUIDs = " + (string-join (bluetooth-configuration-reconnect-uuids config) ",")) "") + "\nReconnectAttempts = " (number->string + (bluetooth-configuration-reconnect-attempts config)) + "\nReconnectIntervals = " (string-join + (map number->string + (bluetooth-configuration-reconnect-intervals + config)) + ",") + "\nAutoEnable = " (bool (bluetooth-configuration-auto-enable? + config)) + "\nResumeDelay = " (number->string (bluetooth-configuration-resume-delay config)) + + "\n[AdvMon]" + "\nRSSISamplingPeriod = " (bluetooth-configuration-rssi-sampling-period config))) (define (bluetooth-directory config) (computed-file "etc-bluetooth" -- 2.34.0 ------------=_1646865842-21933-1-- From unknown Sat Sep 06 20:53:51 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Demis Balbach Subject: bug#52489: closed (Re: bug#52470: [PATCH] services: bluetooth: Add missing config parameters) Message-ID: References: <87y21i21do.fsf_-_@gnu.org> <20211214204703.10152-1-db@minikn.xyz> X-Gnu-PR-Message: they-closed 52489 X-Gnu-PR-Package: guix-patches X-Gnu-PR-Keywords: patch Reply-To: 52489@debbugs.gnu.org Date: Wed, 09 Mar 2022 22:44:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1646865842-21933-3" This is a multi-part message in MIME format... ------------=_1646865842-21933-3 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #52470: [PATCH v2] services: bluetooth: Add missing config parameters which was filed against the guix-patches package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 52489@debbugs.gnu.org. --=20 52470: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D52470 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1646865842-21933-3 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 52470-done) by debbugs.gnu.org; 9 Mar 2022 22:43:26 +0000 Received: from localhost ([127.0.0.1]:32804 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nS51i-0005gk-DF for submit@debbugs.gnu.org; Wed, 09 Mar 2022 17:43:26 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53824) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nS51g-0005gS-7k for 52470-done@debbugs.gnu.org; Wed, 09 Mar 2022 17:43:24 -0500 Received: from [2001:470:142:3::e] (port=45594 helo=fencepost.gnu.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nS51a-0003cB-N3; Wed, 09 Mar 2022 17:43:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=OE8iod6O1jHmY7+d+5F+Or19AxrtmNyba+v9ZGtGxUk=; b=e73tfjuhrPEw1Nq60v79 +OpNCfSnGeYjaDDRpDJflBsp0HAKe/lBuAgyQ2gztJB2G9cDH2LnkuFJTiyPnUiAT0fQOOXhBSZuN 9vVw4/zakQiORfXAipggHTzUuwSOdkYf54SxsKXYg5umTObRK6uV5I2dP5TqgiyaJHnKCSPkeiWkg UwIXnkBH/Az2eT6V+tDPlUyeaHL+KZjUEFXPiy2/1kQ6rkJZWD0y0og8Ib3LFZOv3ckD+/hXw5lmD 9BwQgwQZMQFRvVHvfLHEACMqarCq3owhuBVdlIGSAuoDRD74h+mm3Dxyg4vUnME5JgP7JS7Kp4vCG lVoEEvlxUi5chg==; Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201]:58439 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nS51a-0007ZJ-9m; Wed, 09 Mar 2022 17:43:18 -0500 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Demis Balbach Subject: Re: bug#52470: [PATCH] services: bluetooth: Add missing config parameters References: <20211213192014.8386-1-db@minikn.xyz> <87zgow8s39.fsf@minikn.xyz> Date: Wed, 09 Mar 2022 23:43:15 +0100 In-Reply-To: <87zgow8s39.fsf@minikn.xyz> (Demis Balbach's message of "Sun, 19 Dec 2021 17:41:46 +0100") Message-ID: <87y21i21do.fsf_-_@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 52470-done Cc: Josselin Poiret , Liliana Marie Prikler , 52470-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) Hi Demis, Demis Balbach skribis: > --- > doc/guix.texi | 443 ++++++++++++++++++++++++++++++++++++++- > gnu/services/desktop.scm | 375 ++++++++++++++++++++++++++++++++- > 2 files changed, 813 insertions(+), 5 deletions(-) Great job! I haven=E2=80=99t tested it with actual Bluetooth hardware but it LGTM, so I went ahead and committed it. Apologies for the delay! The documentation work is much welcome. Perhaps it would be interesting to add a short example of =E2=80=98bluetooth-configuration=E2=80=99 with a = sentence explaining what it does=E2=80=94it=E2=80=99s often easier to get started wi= th an example. Anyway, thank you for the hard work, and thanks Liliana and Josselin for reviewing! Ludo=E2=80=99. ------------=_1646865842-21933-3 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 14 Dec 2021 20:47:38 +0000 Received: from localhost ([127.0.0.1]:59713 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mxEi0-0007J4-5K for submit@debbugs.gnu.org; Tue, 14 Dec 2021 15:47:38 -0500 Received: from lists.gnu.org ([209.51.188.17]:58216) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mxEhw-0007Ig-WA for submit@debbugs.gnu.org; Tue, 14 Dec 2021 15:47:34 -0500 Received: from eggs.gnu.org ([209.51.188.92]:46832) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mxEhw-0003vy-QC for guix-patches@gnu.org; Tue, 14 Dec 2021 15:47:32 -0500 Received: from mout-p-201.mailbox.org ([80.241.56.171]:40052) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_CHACHA20_POLY1305:256) (Exim 4.90_1) (envelope-from ) id 1mxEht-00071T-1W for guix-patches@gnu.org; Tue, 14 Dec 2021 15:47:32 -0500 Received: from smtp1.mailbox.org (smtp1.mailbox.org [80.241.60.240]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4JD9RZ5fgTzQkF4; Tue, 14 Dec 2021 21:47:22 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minikn.xyz; s=MBO0001; t=1639514840; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=6kUokls7PmOTwOZqxCT10+C/3cYpBbEZ//SlSJEBAf4=; b=MhTSrepdnJI4w5+xzPYz69U9bQlJ2tk0ZKCwbfK0PB6gE2XkrGflaiB4GnVDzGEoCIXEE4 j13DwsCK5huEqHbQ42JDnQDix3sZRvWp6zel2vSm7nuqIgYb0bH8jcFuR9bzl8Lb6MJB2o ulMNY+meJnQdu+X06kgjABzQmowlD51HSAJ5yjFBUtDhJNe1b4ybD/83o8IHXUnI8szEKb lesN3EMxpPFJjGLL2tfO9R0G2ZuGpEZjn3Ajufra2ZXEpUtdxvazKAQVIEiMJ/AVNpnsB8 B3qVii9wDklsvkepeiSPxTwJkGh/QZRdMO11m9HmbWjx4r8R7Psp45MXLrxSbA== From: Demis Balbach To: guix-patches@gnu.org Subject: [PATCH v2] services: bluetooth: Add missing config parameters Date: Tue, 14 Dec 2021 21:47:03 +0100 Message-Id: <20211214204703.10152-1-db@minikn.xyz> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: none client-ip=80.241.56.171; envelope-from=db@minikn.xyz; helo=mout-p-201.mailbox.org X-Spam_score_int: 0 X-Spam_score: -0.0 X-Spam_bar: / X-Spam_report: (-0.0 / 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, FROM_SUSPICIOUS_NTLD=0.499, FROM_SUSPICIOUS_NTLD_FP=0.292, PDS_OTHER_BAD_TLD=1.997, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: submit Cc: Demis Balbach X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) --- doc/guix.texi | 437 ++++++++++++++++++++++++++++++++++++++- gnu/services/desktop.scm | 389 ++++++++++++++++++++++++++++++++-- 2 files changed, 807 insertions(+), 19 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 757e44398c..14a2f9e590 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -20528,6 +20528,442 @@ bluetooth keyboard or mouse. Users need to be in the @code{lp} group to access the D-Bus service. @end deffn +@deffn {Scheme Variable} bluetooth-service-type +This is the type for the @uref{https://bluez.org/, Linux Bluetooth Protocol +Stack} (BlueZ) system, which generates the @file{/etc/bluetooth/main.conf} +configuration file. The value for this type is a @command{bluetooth-configuration} +record as in this example: + +@lisp +(service bluetooth-service-type) +@end lisp + +See below for details about @code{bluetooth-configuration}. +@end deffn + +@deftp {Data Type} bluetooth-configuration +Data type representing the configuration for @code{bluetooth-service}. + +@table @asis +@item @code{bluez} (default: @code{bluez}) +@code{bluez} package to use. + +@item @code{name} (default: @code{"BlueZ"}) +Default adapter name. + +@item @code{class} (default: @code{"0x000000"}) +Default device class. Only the major and minor device class bits are considered. + +@item @code{discoverable-timeout} (default: @code{180}) +How long to stay in discoverable mode before going back to non-discoverable the +value is in seconds. + +@item @code{always-pairable?} (default: @code{#f}) +Always allow pairing even if there are no agent registered. + +@item @code{pairable-timeout} (default: @code{0}) +How long to stay in pairable mode before going back to non-discoverable. The +value is in seconds. + +@item @code{device-id} (default: @code{#f}) +Use vendor id source (assigner), vendor, product and version information for +DID profile support. The values are separated by ":" and @var{assigner}, @var{VID}, +@var{PID} and @var{version}. + +Possible values are: + +@itemize @bullet +@item +@code{#f} to disable it, + +@item +@code{"assigner:1234:5678:abcd"}, where @var{assigner} is either @code{usb} (default) +or @code{bluetooth}. + +@end itemize + +@item @code{reverse-service-discovery?} (default: @code{#t}) +Do reverse service discovery for previously unknown devices that connect to +us. For BR/EDR this option is really only needed for qualification since the +BITE tester doesn't like us doing reverse SDP for some test cases, for LE +this disables the GATT client functionally so it can be used in system which +can only operate as peripheral. + +@item @code{name-resolving?} (default: @code{#t}) +Enable name resolving after inquiry. Set it to @code{#f} if you don't need +remote devices name and want shorter discovery cycle. + +@item @code{debug-keys?} (default: @code{#f}) +Enable runtime persistency of debug link keys. Default is false which makes +debug link keys valid only for the duration of the connection that they were +created for. + +@item @code{controller-mode} (default: @code{'dual}) +Restricts all controllers to the specified transport. @code{'dual} means both +BR/EDR and LE are enabled (if supported by the hardware). + +Possible values are: + +@itemize @bullet +@item +@code{'dual} + +@item +@code{'bredr} + +@item +@code{'le} + +@end itemize + +@item @code{multi-profile} (default: @code{'off}) +nables Multi Profile Specification support. This allows to specify if system +supports only Multiple Profiles Single Device (MPSD) configuration or both +Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple Devices +(MPMD) configurations. + +Possible values are: + +@itemize @bullet +@item +@code{'off} + +@item +@code{'single} + +@item +@code{'multiple} + +@end itemize + +@item @code{fast-connectable?} (default: @code{#f}) +Permanently enables the Fast Connectable setting for adapters that support +it. When enabled other devices can connect faster to us, however the +tradeoff is increased power consumptions. This feature will fully work only +on kernel version 4.1 and newer. + +@item @code{privacy} (default: @code{'off}) +Default privacy settings. + +@itemize @bullet +@item +@code{'off}: Disable local privacy + +@item +@code{'network/on}: A device will only accept advertising packets from peer +devices that contain private addresses. It may not be compatible with some +legacy devices since it requires the use of RPA(s) all the time + +@item +@code{'device}: A device in device privacy mode is only concerned about the +privacy of the device and will accept advertising packets from peer devices +that contain their Identity Address as well as ones that contain a private +address, even if the peer device has distributed its IRK in the past + +@end itemize + +and additionally, if @var{controller-mode} is set to @code{'dual}: + +@itemize @bullet +@item +@code{'limited-network}: Apply Limited Discoverable Mode to advertising, which +follows the same policy as to BR/EDR that publishes the identity address when +discoverable, and Network Privacy Mode for scanning + +@item +@code{'limited-device}: Apply Limited Discoverable Mode to advertising, which +follows the same policy as to BR/EDR that publishes the identity address when +discoverable, and Device Privacy Mode for scanning. + +@end itemize + +@item @code{just-works-repairing} (default: @code{'never}) +Specify the policy to the JUST-WORKS repairing initiated by peer. + +Possible values: +@itemize @bullet +@item +@code{'never} + +@item +@code{'confirm} + +@item +@code{'always} + +@end itemize + +@item @code{temporary-timeout} (default: @code{30}) +How long to keep temporary devices around. The value is in seconds. @code{0} +disables the timer completely. + +@item @code{refresh-discovery?} (default: @code{#t}) +Enables the device to issue an SDP request to update known services when +profile is connected. + +@item @code{experimental} (default: @code{'false}) +Enables experimental features and interfaces, alternatively a list of UUIDs +can be given. + +Possible values: + +@itemize @bullet +@item +@code{'true} + +@item +@code{'false} + +@item +@code{'d4992530-b9ec-469f-ab01-6c481c47da1c}: BlueZ Experimental Debug, + +@item +@code{'671b10b5-42c0-4696-9227-eb28d1b049d6}: BlueZ Experimental Simultaneous Central and Peripheral, + +@item +@code{'15c0a148-c273-11ea-b3de-0242ac130004}: BlueZ Experimental LL privacy, + +@item +@code{'330859bc-7506-492d-9370-9a6f0614037f}: BlueZ Experimental Bluetooth Quality Report, + +@item +@code{'a6695ace-ee7f-4fb9-881a-5fac66c629af}: BlueZ Experimental Offload Codecs. +@end itemize + +@item @code{remote-name-request-retry-delay} (default: @code{300}) +The duration to avoid retrying to resolve a peer's name, if the previous +try failed. + +@item @code{page-scan-type} (default: @code{#f}) +BR/EDR Page scan activity type. + +@item @code{page-scan-interval} (default: @code{#f}) +BR/EDR Page scan activity interval. + +@item @code{page-scan-window} (default: @code{#f}) +BR/EDR Page scan activity window. + +@item @code{inquiry-scan-type} (default: @code{#f}) +BR/EDR Inquiry scan activity type. + +@item @code{inquiry-scan-interval} (default: @code{#f}) +BR/EDR Inquiry scan activity interval. + +@item @code{inquiry-scan-window} (default: @code{#f}) +BR/EDR Inquiry scan activity window. + +@item @code{link-supervision-timeout} (default: @code{#f}) +BR/EDR Link supervision timeout. + +@item @code{page-timeout} (default: @code{#f}) +BR/EDR Page timeout. + +@item @code{min-sniff-interval} (default: @code{#f}) +BR/EDR minimum sniff interval. + +@item @code{max-sniff-interval} (default: @code{#f}) +BR/EDR maximum sniff interval. + +@item @code{min-advertisement-interval} (default: @code{#f}) +LE minimum advertisement interval (used for legacy advertisement only). + +@item @code{max-advertisement-interval} (default: @code{#f}) +LE maximum advertisement interval (used for legacy advertisement only). + +@item @code{multi-advertisement-rotation-interval} (default: @code{#f}) +LE multiple advertisement rotation interval. + +@item @code{scan-interval-auto-connect} (default: @code{#f}) +LE scanning interval used for passive scanning supporting auto connect. + +@item @code{scan-window-auto-connect} (default: @code{#f}) +LE scanning window used for passive scanning supporting auto connect. + +@item @code{scan-interval-suspend} (default: @code{#f}) +LE scanning interval used for active scanning supporting wake from suspend. + +@item @code{scan-window-suspend} (default: @code{#f}) +LE scanning window used for active scanning supporting wake from suspend. + +@item @code{scan-interval-discovery} (default: @code{#f}) +LE scanning interval used for active scanning supporting discovery. + +@item @code{scan-window-discovery} (default: @code{#f}) +LE scanning window used for active scanning supporting discovery. + +@item @code{scan-interval-adv-monitor} (default: @code{#f}) +LE scanning interval used for passive scanning supporting the advertisement monitor APIs. + +@item @code{scan-window-adv-monitor} (default: @code{#f}) +LE scanning window used for passive scanning supporting the advertisement monitor APIs. + +@item @code{scan-interval-connect} (default: @code{#f}) +LE scanning interval used for connection establishment. + +@item @code{scan-window-connect} (default: @code{#f}) +LE scanning window used for connection establishment. + +@item @code{min-connection-interval} (default: @code{#f}) +LE default minimum connection interval. This value is superceeded by any specific +value provided via the Load Connection Parameters interface. + +@item @code{max-connection-interval} (default: @code{#f}) +LE default maximum connection interval. This value is superceeded by any specific +value provided via the Load Connection Parameters interface. + +@item @code{connection-latency} (default: @code{#f}) +LE default connection latency. This value is superceeded by any specific +value provided via the Load Connection Parameters interface. + +@item @code{connection-supervision-timeout} (default: @code{#f}) +LE default connection supervision timeout. This value is superceeded by any specific +value provided via the Load Connection Parameters interface. + +@item @code{autoconnect-timeout} (default: @code{#f}) +LE default autoconnect timeout. This value is superceeded by any specific +value provided via the Load Connection Parameters interface. + +@item @code{adv-mon-allowlist-scan-duration} (default: @code{300}) +Allowlist scan duration during interleaving scan. Only used when scanning for ADV +monitors. The units are msec. + +@item @code{adv-mon-no-filter-scan-duration} (default: @code{500}) +No filter scan duration during interleaving scan. Only used when scanning for ADV +monitors. The units are msec. + +@item @code{enable-adv-mon-interleave-scan} (default: @code{1}) +Enable/Disable Advertisement Monitor interleave scan for power saving. + +Possible values are: + +@itemize @bullet +@item +@code{0}: disable + +@item +@code{1}: enabled. +@end itemize + +@item @code{cache} (default: @code{'always}) +GATT attribute cache. + +Possible values are: +@itemize @bullet +@item +@code{'always}: Always cache attributes even for devices not paired, this is +recommended as it is best for interoperability, with more consistent +reconnection times and enables proper tracking of notifications for all +devices + +@item +@code{'yes}: Only cache attributes of paired devices + +@item +@code{'no}: Never cache attributes. +@end itemize + +@item @code{key-size} (default: @code{0}) +Minimum required Encryption Key Size for accessing secured characteristics. + +Possible values are: +@itemize @bullet +@item +@code{0}: Don't care + +@item +@code{7-16} +@end itemize + +@item @code{exchange-mtu} (default: @code{517}) +Exchange MTU size. Possible values are: + +@itemize @bullet +@item +@code{23-517} +@end itemize + +@item @code{att-channels} (default: @code{3}) +Number of ATT channels. Possible values are: + +@itemize @bullet +@item +@code{1}: Disables EATT + +@item +@code{2-5} +@end itemize + +@item @code{session-mode} (default: @code{'basic}) +AVDTP L2CAP signalling channel mode. + +Possible values are: + +@itemize @bullet +@item +@code{'basic}: Use L2CAP basic mode + +@item +@code{'ertm}: Use L2CAP enhanced retransmission mode. +@end itemize + +@item @code{stream-mode} (default: @code{'basic}) +AVDTP L2CAP transport channel mode. + +Possible values are: + +@itemize @bullet +@item +@code{'basic}: Use L2CAP basic mode + +@item +@code{'streaming}: Use L2CAP streaming mode. +@end itemize + +@item @code{reconnect-uuids} (default: @code{'()}) +The ReconnectUUIDs defines the set of remote services that should try +to be reconnected to in case of a link loss (link supervision +timeout). The policy plugin should contain a sane set of values by +default, but this list can be overridden here. By setting the list to +empty the reconnection feature gets disabled. + +@item @code{reconnect-attempts} (default: @code{7}) +Defines the number of attempts to reconnect after a link lost. Setting +the value to 0 disables reconnecting feature. + +@item @code{reconnect-intervals} (default: @code{'(1 2 4 8 16 32 64)}) +Defines a list of intervals in seconds to use in between attempts. If +the number of attempts defined in @var{reconnect-attempts} is bigger than +the list of intervals the last interval is repeated until the last attempt. + +@item @code{auto-enable?} (default: @code{#f}) +Defines option to enable all controllers when they are found. This includes +adapters present on start as well as adapters that are plugged in later on. + +@item @code{resume-delay} (default: @code{2}) +Audio devices that were disconnected due to suspend will be reconnected on +resume. @var{resume-delay} determines the delay between when the controller +resumes from suspend and a connection attempt is made. A longer delay is +better for better co-existence with Wi-Fi. The value is in seconds. + +@item @code{rssi-sampling-period} (default: @code{"0xFF"}) +Default RSSI Sampling Period. This is used when a client registers an +advertisement monitor and leaves the RSSISamplingPeriod unset. + +Possible values are: +@itemize @bullet +@item +@code{"0x00"}: Report all advertisements + +@item +@code{"N = 0xXX"}: Report advertisements every N x 100 msec (range: 0x01 to 0xFE) + +@item +@code{"0xFF"}: Report only one advertisement per device during monitoring period. +@end itemize + +@end table +@end deftp + @defvr {Scheme Variable} gnome-keyring-service-type This is the type of the service that adds the @uref{https://wiki.gnome.org/Projects/GnomeKeyring, GNOME Keyring}. Its @@ -20562,7 +20998,6 @@ and ``passwd'' is with the value @code{passwd}. @end table @end deftp - @node Sound Services @subsection Sound Services diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 64d0e85301..07ff4138e9 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -213,9 +213,9 @@ (define* upower-configuration-file ;; Return an upower-daemon configuration file. (match-lambda (($ upower - watts-up-pro? poll-batteries? ignore-lid? use-percentage-for-policy? - percentage-low percentage-critical percentage-action time-low - time-critical time-action critical-power-action) + watts-up-pro? poll-batteries? ignore-lid? use-percentage-for-policy? + percentage-low percentage-critical percentage-action time-low + time-critical time-action critical-power-action) (plain-file "UPower.conf" (string-append "[UPower]\n" @@ -330,16 +330,16 @@ (define* (geoclue-configuration-file config) "whitelist=" (string-join (geoclue-configuration-whitelist config) ";") "\n" - "[wifi]\n" - "url=" (geoclue-configuration-wifi-geolocation-url config) "\n" - "submit-data=" (bool (geoclue-configuration-submit-data? config)) - "submission-url=" - (geoclue-configuration-wifi-submission-url config) "\n" - "submission-nick=" - (geoclue-configuration-submission-nick config) - "\n" - (string-join (geoclue-configuration-applications config) - "\n")))) + "[wifi]\n" + "url=" (geoclue-configuration-wifi-geolocation-url config) "\n" + "submit-data=" (bool (geoclue-configuration-submit-data? config)) + "submission-url=" + (geoclue-configuration-wifi-submission-url config) "\n" + "submission-nick=" + (geoclue-configuration-submission-nick config) + "\n" + (string-join (geoclue-configuration-applications config) + "\n")))) (define (geoclue-dbus-service config) (list (wrapped-dbus-service (geoclue-configuration-geoclue config) @@ -402,14 +402,367 @@ (define-record-type* bluetooth-configuration make-bluetooth-configuration bluetooth-configuration? (bluez bluetooth-configuration-bluez (default bluez)) - (auto-enable? bluetooth-configuration-auto-enable? (default #f))) + + ;;; [General] + (name bluetooth-configuration-name (default "BlueZ")) + (class bluetooth-configuration-class (default "0x000000")) + (discoverable-timeout + bluetooth-configuration-discoverable-timeout (default 180)) + (always-pairable? bluetooth-configuration-always-pairable? (default #f)) + (pairable-timeout bluetooth-configuration-pairable-timeout (default 0)) + (device-id bluetooth-configuration-device-id (default #f)) + (reverse-service-discovery? + bluetooth-configuration-reverse-service-discovery (default #t)) + (name-resolving? bluetooth-configuration-name-resolving? (default #t)) + (debug-keys? bluetooth-configuration-debug-keys? (default #f)) + + ;;; Possible values: + ;;; 'dual, 'bredr, 'le + (controller-mode bluetooth-configuration-controller-mode (default 'dual)) + + ;;; Possible values: + ;;; 'off, 'single, 'multiple + (multi-profile bluetooth-configuration-multi-profile (default 'off)) + (fast-connectable? bluetooth-configuration-fast-connectable? (default #f)) + + ;;; Possible values: + ;;; for LE mode: 'off, 'network/on, 'device + ;;; for Dual mode: 'off, 'network/on', 'device, 'limited-network, 'limited-device + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n68 + (privacy bluetooth-configuration-privacy (default 'off)) + + ;;; Possible values: + ;;; 'never, 'confirm, 'always + (just-works-repairing + bluetooth-configuration-just-works-repairing (default 'never)) + (temporary-timeout bluetooth-configuration-temporary-timeout (default 30)) + (refresh-discovery? bluetooth-configuration-refresh-discovery (default #t)) + + ;;; Possible values: 'true, 'false, + ;;; Possible UUIDs: + ;;; d4992530-b9ec-469f-ab01-6c481c47da1c (BlueZ Experimental Debug) + ;;; 671b10b5-42c0-4696-9227-eb28d1b049d6 (BlueZ Experimental Simultaneous Central and Peripheral) + ;;; 15c0a148-c273-11ea-b3de-0242ac130004 (BlueZ Experimental LL privacy) + ;;; 330859bc-7506-492d-9370-9a6f0614037f (BlueZ Experimental Bluetooth Quality Report) + ;;; a6695ace-ee7f-4fb9-881a-5fac66c629af (BlueZ Experimental Offload Codecs) + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n110 + (experimental bluetooth-configuration-experimental (default 'false)) + (remote-name-request-retry-delay + bluetooth-configuration-remote-name-request-retry-delay (default 300)) + + ;;; [BR] + (page-scan-type bluetooth-configuration-page-scan-type (default #f)) + (page-scan-interval bluetooth-configuration-page-scan-interval (default #f)) + (page-scan-window bluetooth-configuration-page-scan-window (default #f)) + (inquiry-scan-type bluetooth-configuration-inquiry-scan-type (default #f)) + (inquiry-scan-interval bluetooth-configuration-inquiry-scan-interval (default #f)) + (inquiry-scan-window bluetooth-configuration-inquiry-scan-window (default #f)) + (link-supervision-timeout bluetooth-configuration-link-supervision-timeout (default #f)) + (page-timeout bluetooth-configuration-page-timeout (default #f)) + (min-sniff-interval bluetooth-configuration-min-sniff-interval (default #f)) + (max-sniff-interval bluetooth-configuration-max-sniff-interval (default #f)) + + ;;; [LE] + (min-advertisement-interval + bluetooth-configuration-min-advertisement-interval (default #f)) + (max-advertisement-interval + bluetooth-configuration-max-advertisement-interval (default #f)) + (multi-advertisement-rotation-interval + bluetooth-configuration-multi-advertisement-rotation-interval (default #f)) + (scan-interval-auto-connect + bluetooth-configuration-scan-interval-auto-connect (default #f)) + (scan-window-auto-connect + bluetooth-configuration-scan-window-auto-connect (default #f)) + (scan-interval-suspend + bluetooth-configuration-scan-interval-suspend (default #f)) + (scan-window-suspend + bluetooth-configuration-scan-window-suspend (default #f)) + (scan-interval-discovery + bluetooth-configuration-scan-interval-discovery (default #f)) + (scan-window-discovery + bluetooth-configuration-scan-window-discovery (default #f)) + (scan-interval-adv-monitor + bluetooth-configuration-scan-interval-adv-monitor (default #f)) + (scan-window-adv-monitor + bluetooth-configuration-scan-window-adv-monitor (default #f)) + (scan-interval-connect + bluetooth-configuration-scan-interval-connect (default #f)) + (scan-window-connect + bluetooth-configuration-scan-window-connect (default #f)) + (min-connection-interval + bluetooth-configuration-min-connection-interval (default #f)) + (max-connection-interval + bluetooth-configuration-max-connection-interval (default #f)) + (connection-latency + bluetooth-configuration-connection-latency (default #f)) + (connection-supervision-timeout + bluetooth-configuration-connection-supervision-timeout (default #f)) + (autoconnect-timeout + bluetooth-configuration-autoconnect-timeout (default #f)) + (adv-mon-allowlist-scan-duration + bluetooth-configuration-adv-mon-allowlist-scan-duration (default 300)) + (adv-mon-no-filter-scan-duration + bluetooth-configuration-adv-mon-no-filter-scan-duration (default 500)) + (enable-adv-mon-interleave-scan + bluetooth-configuration-enable-adv-mon-interleave-scan (default 1)) + + ;;; [GATT] + ;;; Possible values: 'yes, 'no, 'always + (cache bluetooth-configuration-cache (default 'always)) + + ;;; Possible values: 7 ... 16, 0 (don't care) + (key-size bluetooth-configuration-key-size (default 0)) + + ;;; Possible values: 23 ... 517 + (exchange-mtu bluetooth-configuration-exchange-mtu (default 517)) + + ;;; Possible values: 1 ... 5 + (att-channels bluetooth-configuration-att-channels (default 3)) + + ;;; [AVDTP] + ;;; Possible values: 'basic, 'ertm + (session-mode bluetooth-configuration-session-mode (default 'basic)) + + ;;; Possible values: 'basic, 'streaming + (stream-mode bluetooth-configuration-stream-mode (default 'basic)) + + ;;; [Policy] + (reconnect-uuids bluetooth-configuration-reconnect-uuids (default '())) + (reconnect-attempts bluetooth-configuration-reconnect-attempts (default 7)) + (reconnect-intervals bluetooth-configuration-reconnect-intervals + (default (list 1 2 4 8 16 32 64))) + (auto-enable? bluetooth-configuration-auto-enable? (default #f)) + (resume-delay bluetooth-configuration-resume-delay (default 2)) + + ;;; [AdvMon] + ;;; Possible values: + ;;; "0x00", "0xFF", + ;;; "N = 0x00" ... "N = 0xFF" + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n286 + (rssi-sampling-period bluetooth-configuration-rssi-sampling-period + (default "0xFF"))) (define (bluetooth-configuration-file config) "Return a configuration file for the systemd bluetooth service, as a string." (string-append - "[Policy]\n" - "AutoEnable=" (bool (bluetooth-configuration-auto-enable? - config)))) + "[General]" + "\nName = " (bluetooth-configuration-name config) + "\nClass = " (bluetooth-configuration-class config) + "\nDiscoverableTimeout = " (number->string + (bluetooth-configuration-discoverable-timeout + config)) + "\nAlwaysPairable = " (bool (bluetooth-configuration-always-pairable? + config)) + "\nPairableTimeout = " (number->string + (bluetooth-configuration-pairable-timeout + config)) + (if (bluetooth-configuration-device-id config) + (string-append "\nDeviceID = " (bluetooth-configuration-device-id config)) + "") + "\nReverseServiceDiscovery = " (bool + (bluetooth-configuration-reverse-service-discovery + config)) + "\nNameResolving = " (bool (bluetooth-configuration-name-resolving? config)) + "\nDebugKeys = " (bool (bluetooth-configuration-debug-keys? config)) + "\nControllerMode = " (symbol->string + (bluetooth-configuration-controller-mode config)) + "\nMultiProfile = " (symbol->string (bluetooth-configuration-multi-profile + config)) + "\nFastConnectable = " (bool (bluetooth-configuration-fast-connectable? config)) + "\nPrivacy = " (symbol->string (bluetooth-configuration-privacy config)) + "\nJustWorksRepairing = " (symbol->string + (bluetooth-configuration-just-works-repairing config)) + "\nTemporaryTimeout = " (number->string + (bluetooth-configuration-temporary-timeout config)) + "\nRefreshDiscovery = " (bool (bluetooth-configuration-refresh-discovery config)) + "\nExperimental = " (symbol->string (bluetooth-configuration-experimental config)) + "\nRemoteNameRequestRetryDelay = " (number->string + (bluetooth-configuration-remote-name-request-retry-delay + config)) + "\n[BR]" + (if (bluetooth-configuration-page-scan-type config) + (string-append + "\nPageScanType = " + (number->string (bluetooth-configuration-page-scan-type config))) + "") + (if (bluetooth-configuration-page-scan-interval config) + (string-append + "\nPageScanInterval = " + (number->string (bluetooth-configuration-page-scan-interval config))) + "") + (if (bluetooth-configuration-page-scan-window config) + (string-append + "\nPageScanWindow = " + (number->string (bluetooth-configuration-page-scan-window config))) + "") + (if (bluetooth-configuration-inquiry-scan-type config) + (string-append + "\nInquiryScanType = " + (number->string (bluetooth-configuration-inquiry-scan-type config))) + "") + (if (bluetooth-configuration-inquiry-scan-interval config) + (string-append + "\nInquiryScanInterval = " + (number->string (bluetooth-configuration-inquiry-scan-interval config))) + "") + (if (bluetooth-configuration-inquiry-scan-window config) + (string-append + "\nInquiryScanWindow = " + (number->string (bluetooth-configuration-inquiry-scan-window config))) + "") + (if (bluetooth-configuration-link-supervision-timeout config) + (string-append + "\nLinkSupervisionTimeout = " + (number->string (bluetooth-configuration-link-supervision-timeout config))) + "") + (if (bluetooth-configuration-page-timeout config) + (string-append + "\nPageTimeout = " + (number->string (bluetooth-configuration-page-timeout config))) + "") + (if (bluetooth-configuration-min-sniff-interval config) + (string-append + "\nMinSniffInterval = " + (number->string (bluetooth-configuration-min-sniff-interval config))) + "") + (if (bluetooth-configuration-max-sniff-interval config) + (string-append + "\nMaxSniffInterval = " + (number->string (bluetooth-configuration-max-sniff-interval config))) + "") + + "\n[LE]" + (if (bluetooth-configuration-min-advertisement-interval config) + (string-append + "\nMinAdvertisementInterval = " + (number->string (bluetooth-configuration-min-advertisement-interval config))) + "") + (if (bluetooth-configuration-max-advertisement-interval config) + (string-append + "\nMaxAdvertisementInterval = " + (number->string (bluetooth-configuration-max-advertisement-interval config))) + "") + (if (bluetooth-configuration-multi-advertisement-rotation-interval config) + (string-append + "\nMultiAdvertisementRotationInterval = " + (number->string + (bluetooth-configuration-multi-advertisement-rotation-interval config))) + "") + (if (bluetooth-configuration-scan-interval-auto-connect config) + (string-append + "\nScanIntervalAutoConnect = " + (number->string (bluetooth-configuration-scan-interval-auto-connect config))) + "") + (if (bluetooth-configuration-scan-window-auto-connect config) + (string-append + "\nScanWindowAutoConnect = " + (number->string (bluetooth-configuration-scan-window-auto-connect config))) + "") + (if (bluetooth-configuration-scan-interval-suspend config) + (string-append + "\nScanIntervalSuspend = " + (number->string (bluetooth-configuration-scan-interval-suspend config))) + "") + (if (bluetooth-configuration-scan-window-suspend config) + (string-append + "\nScanWindowSuspend = " + (number->string (bluetooth-configuration-scan-window-suspend config))) + "") + (if (bluetooth-configuration-scan-interval-discovery config) + (string-append + "\nScanIntervalDiscovery = " + (number->string (bluetooth-configuration-scan-interval-discovery config))) + "") + (if (bluetooth-configuration-scan-window-discovery config) + (string-append + "\nScanWindowDiscovery = " + (number->string (bluetooth-configuration-scan-window-discovery config))) + "") + (if (bluetooth-configuration-scan-interval-adv-monitor config) + (string-append + "\nScanIntervalAdvMonitor = " + (number->string (bluetooth-configuration-scan-interval-adv-monitor config))) + "") + (if (bluetooth-configuration-scan-window-adv-monitor config) + (string-append + "\nScanWindowAdvMonitor = " + (number->string (bluetooth-configuration-scan-window-adv-monitor config))) + "") + (if (bluetooth-configuration-scan-interval-connect config) + (string-append + "\nScanIntervalConnect = " + (number->string (bluetooth-configuration-scan-interval-connect config))) + "") + (if (bluetooth-configuration-scan-window-connect config) + (string-append + "\nScanWindowConnect = " + (number->string (bluetooth-configuration-scan-window-connect config))) + "") + (if (bluetooth-configuration-min-connection-interval config) + (string-append + "\nMinConnectionInterval = " + (number->string (bluetooth-configuration-min-connection-interval config))) + "") + (if (bluetooth-configuration-max-connection-interval config) + (string-append + "\nMaxConnectionInterval = " + (number->string (bluetooth-configuration-max-connection-interval config))) + "") + (if (bluetooth-configuration-connection-latency config) + (string-append + "\nConnectionLatency = " + (number->string (bluetooth-configuration-connection-latency config))) + "") + (if (bluetooth-configuration-connection-supervision-timeout config) + (string-append + "\nConnectionSupervisionTimeout = " + (number->string (bluetooth-configuration-connection-supervision-timeout config))) + "") + (if (bluetooth-configuration-autoconnect-timeout config) + (string-append + "\nAutoconnecttimeout = " + (number->string (bluetooth-configuration-autoconnect-timeout config))) + "") + "\nAdvMonAllowlistScanDuration = " (number->string + (bluetooth-configuration-adv-mon-allowlist-scan-duration + config)) + "\nAdvMonNoFilterScanDuration = " (number->string + (bluetooth-configuration-adv-mon-no-filter-scan-duration + config)) + "\nEnableAdvMonInterleaveScan = " (number->string + (bluetooth-configuration-enable-adv-mon-interleave-scan + config)) + + "\n[GATT]" + "\nCache = " (symbol->string (bluetooth-configuration-cache config)) + "\nKeySize = " (number->string (bluetooth-configuration-key-size config)) + "\nExchangeMTU = " (number->string (bluetooth-configuration-exchange-mtu config)) + "\nChannels = " (number->string (bluetooth-configuration-att-channels config)) + + "\n[AVDTP]" + "\nSessionMode = " (symbol->string (bluetooth-configuration-session-mode config)) + "\nStreamMode = " (symbol->string (bluetooth-configuration-stream-mode config)) + + "\n[Policy]" + (if (not (eq? '() (bluetooth-configuration-reconnect-uuids config))) + (string-append + "\nReconnectUUIDs = " + (string-join (bluetooth-configuration-reconnect-uuids config) + ",")) + "") + "\nReconnectAttempts = " (number->string + (bluetooth-configuration-reconnect-attempts config)) + "\nReconnectIntervals = " (string-join + (map number->string + (bluetooth-configuration-reconnect-intervals + config)) + ",") + "\nAutoEnable = " (bool (bluetooth-configuration-auto-enable? + config)) + "\nResumeDelay = " (number->string (bluetooth-configuration-resume-delay config)) + + "\n[AdvMon]" + "\nRSSISamplingPeriod = " (bluetooth-configuration-rssi-sampling-period config))) (define (bluetooth-directory config) (computed-file "etc-bluetooth" @@ -1211,7 +1564,7 @@ (define %desktop-services (setuid-program (program program))) (list (file-append nfs-utils "/sbin/mount.nfs") - (file-append ntfs-3g "/sbin/mount.ntfs-3g")))) + (file-append ntfs-3g "/sbin/mount.ntfs-3g")))) ;; The global fontconfig cache directory can sometimes contain ;; stale entries, possibly referencing fonts that have been GC'd, -- 2.34.0 ------------=_1646865842-21933-3-- From unknown Sat Sep 06 20:53:51 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Demis Balbach Subject: bug#52575: closed (Re: bug#52470: [PATCH] services: bluetooth: Add missing config parameters) Message-ID: References: <87y21i21do.fsf_-_@gnu.org> <20211217132610.26529-1-db@minikn.xyz> X-Gnu-PR-Message: they-closed 52575 X-Gnu-PR-Package: guix-patches X-Gnu-PR-Keywords: patch Reply-To: 52575@debbugs.gnu.org Date: Wed, 09 Mar 2022 22:44:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1646865842-21933-5" This is a multi-part message in MIME format... ------------=_1646865842-21933-5 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #52470: [PATCH v3] services: bluetooth: Add missing config parameters which was filed against the guix-patches package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 52575@debbugs.gnu.org. --=20 52470: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D52470 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1646865842-21933-5 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 52470-done) by debbugs.gnu.org; 9 Mar 2022 22:43:26 +0000 Received: from localhost ([127.0.0.1]:32804 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nS51i-0005gk-DF for submit@debbugs.gnu.org; Wed, 09 Mar 2022 17:43:26 -0500 Received: from eggs.gnu.org ([209.51.188.92]:53824) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nS51g-0005gS-7k for 52470-done@debbugs.gnu.org; Wed, 09 Mar 2022 17:43:24 -0500 Received: from [2001:470:142:3::e] (port=45594 helo=fencepost.gnu.org) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nS51a-0003cB-N3; Wed, 09 Mar 2022 17:43:18 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=OE8iod6O1jHmY7+d+5F+Or19AxrtmNyba+v9ZGtGxUk=; b=e73tfjuhrPEw1Nq60v79 +OpNCfSnGeYjaDDRpDJflBsp0HAKe/lBuAgyQ2gztJB2G9cDH2LnkuFJTiyPnUiAT0fQOOXhBSZuN 9vVw4/zakQiORfXAipggHTzUuwSOdkYf54SxsKXYg5umTObRK6uV5I2dP5TqgiyaJHnKCSPkeiWkg UwIXnkBH/Az2eT6V+tDPlUyeaHL+KZjUEFXPiy2/1kQ6rkJZWD0y0og8Ib3LFZOv3ckD+/hXw5lmD 9BwQgwQZMQFRvVHvfLHEACMqarCq3owhuBVdlIGSAuoDRD74h+mm3Dxyg4vUnME5JgP7JS7Kp4vCG lVoEEvlxUi5chg==; Received: from 91-160-117-201.subs.proxad.net ([91.160.117.201]:58439 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nS51a-0007ZJ-9m; Wed, 09 Mar 2022 17:43:18 -0500 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Demis Balbach Subject: Re: bug#52470: [PATCH] services: bluetooth: Add missing config parameters References: <20211213192014.8386-1-db@minikn.xyz> <87zgow8s39.fsf@minikn.xyz> Date: Wed, 09 Mar 2022 23:43:15 +0100 In-Reply-To: <87zgow8s39.fsf@minikn.xyz> (Demis Balbach's message of "Sun, 19 Dec 2021 17:41:46 +0100") Message-ID: <87y21i21do.fsf_-_@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 52470-done Cc: Josselin Poiret , Liliana Marie Prikler , 52470-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) Hi Demis, Demis Balbach skribis: > --- > doc/guix.texi | 443 ++++++++++++++++++++++++++++++++++++++- > gnu/services/desktop.scm | 375 ++++++++++++++++++++++++++++++++- > 2 files changed, 813 insertions(+), 5 deletions(-) Great job! I haven=E2=80=99t tested it with actual Bluetooth hardware but it LGTM, so I went ahead and committed it. Apologies for the delay! The documentation work is much welcome. Perhaps it would be interesting to add a short example of =E2=80=98bluetooth-configuration=E2=80=99 with a = sentence explaining what it does=E2=80=94it=E2=80=99s often easier to get started wi= th an example. Anyway, thank you for the hard work, and thanks Liliana and Josselin for reviewing! Ludo=E2=80=99. ------------=_1646865842-21933-5 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 17 Dec 2021 13:27:13 +0000 Received: from localhost ([127.0.0.1]:38268 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1myDGR-0003e2-UF for submit@debbugs.gnu.org; Fri, 17 Dec 2021 08:27:13 -0500 Received: from lists.gnu.org ([209.51.188.17]:42430) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1myDGO-0003dq-VW for submit@debbugs.gnu.org; Fri, 17 Dec 2021 08:27:10 -0500 Received: from eggs.gnu.org ([209.51.188.92]:49386) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1myDGO-0003Ta-QB for guix-patches@gnu.org; Fri, 17 Dec 2021 08:27:08 -0500 Received: from mout-p-101.mailbox.org ([80.241.56.151]:13126) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_CHACHA20_POLY1305:256) (Exim 4.90_1) (envelope-from ) id 1myDGJ-0002nQ-0W for guix-patches@gnu.org; Fri, 17 Dec 2021 08:27:08 -0500 Received: from smtp102.mailbox.org (smtp102.mailbox.org [80.241.60.233]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4JFqWz4QsQzQlHk; Fri, 17 Dec 2021 14:26:55 +0100 (CET) X-Virus-Scanned: amavisd-new at heinlein-support.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=minikn.xyz; s=MBO0001; t=1639747613; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=YT1cDwQ2MKEwLOevVWt5wyD6NbWgn+i9gBZrifaIztg=; b=CVSSa1n5EC1p//7Oa6j5I7BHbYZHoeTBHE0gJtovrY0gO27UaR968J4dXDFkT1gRjvnGyZ sHMABelmKGPfRt1DBo+x8JhCgCKwmwUcR9EaYG1zAm84Q3YoLjHefbQs+rfM/zJf5JfXID wEmoEsxr+1cZ7/hrL1V3MrX3Vrg4G+A4o03wJTiHkzzfWlCsWCz6AG8RTftG/UVtzvFCi1 Bb7F/BTzJPGckXxXi6DUHlAE6+A7Zvt/rvQs9ZBwHVBsPyBZPlPAzwP5aRLViSYni8dnAp KWtJzafGkaFs6LrgVaPlXVKtyvndX6diHQRke3siT20o7KAJCvXUBan2Pu1klQ== From: Demis Balbach To: guix-patches@gnu.org Subject: [PATCH v3] services: bluetooth: Add missing config parameters Date: Fri, 17 Dec 2021 14:26:10 +0100 Message-Id: <20211217132610.26529-1-db@minikn.xyz> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: none client-ip=80.241.56.151; envelope-from=db@minikn.xyz; helo=mout-p-101.mailbox.org X-Spam_score_int: 0 X-Spam_score: -0.0 X-Spam_bar: / X-Spam_report: (-0.0 / 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, FROM_SUSPICIOUS_NTLD=0.498, FROM_SUSPICIOUS_NTLD_FP=0.295, PDS_OTHER_BAD_TLD=1.997, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_NONE=0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: submit Cc: Demis Balbach X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) --- doc/guix.texi | 437 ++++++++++++++++++++++++++++++++++++++- gnu/services/desktop.scm | 363 +++++++++++++++++++++++++++++++- 2 files changed, 794 insertions(+), 6 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 757e44398c..8a5d4ac502 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -20528,6 +20528,442 @@ bluetooth keyboard or mouse. Users need to be in the @code{lp} group to access the D-Bus service. @end deffn +@deffn {Scheme Variable} bluetooth-service-type +This is the type for the @uref{https://bluez.org/, Linux Bluetooth Protocol +Stack} (BlueZ) system, which generates the @file{/etc/bluetooth/main.conf} +configuration file. The value for this type is a @command{bluetooth-configuration} +record as in this example: + +@lisp +(service bluetooth-service-type) +@end lisp + +See below for details about @code{bluetooth-configuration}. +@end deffn + +@deftp {Data Type} bluetooth-configuration +Data type representing the configuration for @code{bluetooth-service}. + +@table @asis +@item @code{bluez} (default: @code{bluez}) +@code{bluez} package to use. + +@item @code{name} (default: @code{"BlueZ"}) +Default adapter name. + +@item @code{class} (default: @code{"0x000000"}) +Default device class. Only the major and minor device class bits are considered. + +@item @code{discoverable-timeout} (default: @code{180}) +How long to stay in discoverable mode before going back to non-discoverable. The +value is in seconds. + +@item @code{always-pairable?} (default: @code{#f}) +Always allow pairing even if there are no agents registered. + +@item @code{pairable-timeout} (default: @code{0}) +How long to stay in pairable mode before going back to non-discoverable. The +value is in seconds. + +@item @code{device-id} (default: @code{#f}) +Use vendor id source (assigner), vendor, product and version information for +DID profile support. The values are separated by ":" and @var{assigner}, @var{VID}, +@var{PID} and @var{version}. + +Possible values are: + +@itemize @bullet +@item +@code{#f} to disable it, + +@item +@code{"assigner:1234:5678:abcd"}, where @var{assigner} is either @code{usb} (default) +or @code{bluetooth}. + +@end itemize + +@item @code{reverse-service-discovery?} (default: @code{#t}) +Do reverse service discovery for previously unknown devices that connect to +us. For BR/EDR this option is really only needed for qualification since the +BITE tester doesn't like us doing reverse SDP for some test cases, for LE +this disables the GATT client functionally so it can be used in system which +can only operate as peripheral. + +@item @code{name-resolving?} (default: @code{#t}) +Enable name resolving after inquiry. Set it to @code{#f} if you don't need +remote devices name and want shorter discovery cycle. + +@item @code{debug-keys?} (default: @code{#f}) +Enable runtime persistency of debug link keys. Default is false which makes +debug link keys valid only for the duration of the connection that they were +created for. + +@item @code{controller-mode} (default: @code{'dual}) +Restricts all controllers to the specified transport. @code{'dual} means both +BR/EDR and LE are enabled (if supported by the hardware). + +Possible values are: + +@itemize @bullet +@item +@code{'dual} + +@item +@code{'bredr} + +@item +@code{'le} + +@end itemize + +@item @code{multi-profile} (default: @code{'off}) +Enables Multi Profile Specification support. This allows to specify if system +supports only Multiple Profiles Single Device (MPSD) configuration or both +Multiple Profiles Single Device (MPSD) and Multiple Profiles Multiple Devices +(MPMD) configurations. + +Possible values are: + +@itemize @bullet +@item +@code{'off} + +@item +@code{'single} + +@item +@code{'multiple} + +@end itemize + +@item @code{fast-connectable?} (default: @code{#f}) +Permanently enables the Fast Connectable setting for adapters that support +it. When enabled other devices can connect faster to us, however the +tradeoff is increased power consumptions. This feature will fully work only +on kernel version 4.1 and newer. + +@item @code{privacy} (default: @code{'off}) +Default privacy settings. + +@itemize @bullet +@item +@code{'off}: Disable local privacy + +@item +@code{'network/on}: A device will only accept advertising packets from peer +devices that contain private addresses. It may not be compatible with some +legacy devices since it requires the use of RPA(s) all the time + +@item +@code{'device}: A device in device privacy mode is only concerned about the +privacy of the device and will accept advertising packets from peer devices +that contain their Identity Address as well as ones that contain a private +address, even if the peer device has distributed its IRK in the past + +@end itemize + +and additionally, if @var{controller-mode} is set to @code{'dual}: + +@itemize @bullet +@item +@code{'limited-network}: Apply Limited Discoverable Mode to advertising, which +follows the same policy as to BR/EDR that publishes the identity address when +discoverable, and Network Privacy Mode for scanning + +@item +@code{'limited-device}: Apply Limited Discoverable Mode to advertising, which +follows the same policy as to BR/EDR that publishes the identity address when +discoverable, and Device Privacy Mode for scanning. + +@end itemize + +@item @code{just-works-repairing} (default: @code{'never}) +Specify the policy to the JUST-WORKS repairing initiated by peer. + +Possible values: +@itemize @bullet +@item +@code{'never} + +@item +@code{'confirm} + +@item +@code{'always} + +@end itemize + +@item @code{temporary-timeout} (default: @code{30}) +How long to keep temporary devices around. The value is in seconds. @code{0} +disables the timer completely. + +@item @code{refresh-discovery?} (default: @code{#t}) +Enables the device to issue an SDP request to update known services when +profile is connected. + +@item @code{experimental} (default: @code{'false}) +Enables experimental features and interfaces, alternatively a list of UUIDs +can be given. + +Possible values: + +@itemize @bullet +@item +@code{'true} + +@item +@code{'false} + +@item +@code{'d4992530-b9ec-469f-ab01-6c481c47da1c}: BlueZ Experimental Debug, + +@item +@code{'671b10b5-42c0-4696-9227-eb28d1b049d6}: BlueZ Experimental Simultaneous Central and Peripheral, + +@item +@code{'15c0a148-c273-11ea-b3de-0242ac130004}: BlueZ Experimental LL privacy, + +@item +@code{'330859bc-7506-492d-9370-9a6f0614037f}: BlueZ Experimental Bluetooth Quality Report, + +@item +@code{'a6695ace-ee7f-4fb9-881a-5fac66c629af}: BlueZ Experimental Offload Codecs. +@end itemize + +@item @code{remote-name-request-retry-delay} (default: @code{300}) +The duration to avoid retrying to resolve a peer's name, if the previous +try failed. + +@item @code{page-scan-type} (default: @code{#f}) +BR/EDR Page scan activity type. + +@item @code{page-scan-interval} (default: @code{#f}) +BR/EDR Page scan activity interval. + +@item @code{page-scan-window} (default: @code{#f}) +BR/EDR Page scan activity window. + +@item @code{inquiry-scan-type} (default: @code{#f}) +BR/EDR Inquiry scan activity type. + +@item @code{inquiry-scan-interval} (default: @code{#f}) +BR/EDR Inquiry scan activity interval. + +@item @code{inquiry-scan-window} (default: @code{#f}) +BR/EDR Inquiry scan activity window. + +@item @code{link-supervision-timeout} (default: @code{#f}) +BR/EDR Link supervision timeout. + +@item @code{page-timeout} (default: @code{#f}) +BR/EDR Page timeout. + +@item @code{min-sniff-interval} (default: @code{#f}) +BR/EDR minimum sniff interval. + +@item @code{max-sniff-interval} (default: @code{#f}) +BR/EDR maximum sniff interval. + +@item @code{min-advertisement-interval} (default: @code{#f}) +LE minimum advertisement interval (used for legacy advertisement only). + +@item @code{max-advertisement-interval} (default: @code{#f}) +LE maximum advertisement interval (used for legacy advertisement only). + +@item @code{multi-advertisement-rotation-interval} (default: @code{#f}) +LE multiple advertisement rotation interval. + +@item @code{scan-interval-auto-connect} (default: @code{#f}) +LE scanning interval used for passive scanning supporting auto connect. + +@item @code{scan-window-auto-connect} (default: @code{#f}) +LE scanning window used for passive scanning supporting auto connect. + +@item @code{scan-interval-suspend} (default: @code{#f}) +LE scanning interval used for active scanning supporting wake from suspend. + +@item @code{scan-window-suspend} (default: @code{#f}) +LE scanning window used for active scanning supporting wake from suspend. + +@item @code{scan-interval-discovery} (default: @code{#f}) +LE scanning interval used for active scanning supporting discovery. + +@item @code{scan-window-discovery} (default: @code{#f}) +LE scanning window used for active scanning supporting discovery. + +@item @code{scan-interval-adv-monitor} (default: @code{#f}) +LE scanning interval used for passive scanning supporting the advertisement monitor APIs. + +@item @code{scan-window-adv-monitor} (default: @code{#f}) +LE scanning window used for passive scanning supporting the advertisement monitor APIs. + +@item @code{scan-interval-connect} (default: @code{#f}) +LE scanning interval used for connection establishment. + +@item @code{scan-window-connect} (default: @code{#f}) +LE scanning window used for connection establishment. + +@item @code{min-connection-interval} (default: @code{#f}) +LE default minimum connection interval. This value is superceeded by any specific +value provided via the Load Connection Parameters interface. + +@item @code{max-connection-interval} (default: @code{#f}) +LE default maximum connection interval. This value is superceeded by any specific +value provided via the Load Connection Parameters interface. + +@item @code{connection-latency} (default: @code{#f}) +LE default connection latency. This value is superceeded by any specific +value provided via the Load Connection Parameters interface. + +@item @code{connection-supervision-timeout} (default: @code{#f}) +LE default connection supervision timeout. This value is superceeded by any specific +value provided via the Load Connection Parameters interface. + +@item @code{autoconnect-timeout} (default: @code{#f}) +LE default autoconnect timeout. This value is superceeded by any specific +value provided via the Load Connection Parameters interface. + +@item @code{adv-mon-allowlist-scan-duration} (default: @code{300}) +Allowlist scan duration during interleaving scan. Only used when scanning for ADV +monitors. The units are msec. + +@item @code{adv-mon-no-filter-scan-duration} (default: @code{500}) +No filter scan duration during interleaving scan. Only used when scanning for ADV +monitors. The units are msec. + +@item @code{enable-adv-mon-interleave-scan} (default: @code{1}) +Enable/Disable Advertisement Monitor interleave scan for power saving. + +Possible values are: + +@itemize @bullet +@item +@code{0}: disable + +@item +@code{1}: enabled. +@end itemize + +@item @code{cache} (default: @code{'always}) +GATT attribute cache. + +Possible values are: +@itemize @bullet +@item +@code{'always}: Always cache attributes even for devices not paired, this is +recommended as it is best for interoperability, with more consistent +reconnection times and enables proper tracking of notifications for all +devices + +@item +@code{'yes}: Only cache attributes of paired devices + +@item +@code{'no}: Never cache attributes. +@end itemize + +@item @code{key-size} (default: @code{0}) +Minimum required Encryption Key Size for accessing secured characteristics. + +Possible values are: +@itemize @bullet +@item +@code{0}: Don't care + +@item +@code{7-16} +@end itemize + +@item @code{exchange-mtu} (default: @code{517}) +Exchange MTU size. Possible values are: + +@itemize @bullet +@item +@code{23-517} +@end itemize + +@item @code{att-channels} (default: @code{3}) +Number of ATT channels. Possible values are: + +@itemize @bullet +@item +@code{1}: Disables EATT + +@item +@code{2-5} +@end itemize + +@item @code{session-mode} (default: @code{'basic}) +AVDTP L2CAP signalling channel mode. + +Possible values are: + +@itemize @bullet +@item +@code{'basic}: Use L2CAP basic mode + +@item +@code{'ertm}: Use L2CAP enhanced retransmission mode. +@end itemize + +@item @code{stream-mode} (default: @code{'basic}) +AVDTP L2CAP transport channel mode. + +Possible values are: + +@itemize @bullet +@item +@code{'basic}: Use L2CAP basic mode + +@item +@code{'streaming}: Use L2CAP streaming mode. +@end itemize + +@item @code{reconnect-uuids} (default: @code{'()}) +The ReconnectUUIDs defines the set of remote services that should try +to be reconnected to in case of a link loss (link supervision +timeout). The policy plugin should contain a sane set of values by +default, but this list can be overridden here. By setting the list to +empty the reconnection feature gets disabled. + +@item @code{reconnect-attempts} (default: @code{7}) +Defines the number of attempts to reconnect after a link lost. Setting +the value to 0 disables reconnecting feature. + +@item @code{reconnect-intervals} (default: @code{'(1 2 4 8 16 32 64)}) +Defines a list of intervals in seconds to use in between attempts. If +the number of attempts defined in @var{reconnect-attempts} is bigger than +the list of intervals the last interval is repeated until the last attempt. + +@item @code{auto-enable?} (default: @code{#f}) +Defines option to enable all controllers when they are found. This includes +adapters present on start as well as adapters that are plugged in later on. + +@item @code{resume-delay} (default: @code{2}) +Audio devices that were disconnected due to suspend will be reconnected on +resume. @var{resume-delay} determines the delay between when the controller +resumes from suspend and a connection attempt is made. A longer delay is +better for better co-existence with Wi-Fi. The value is in seconds. + +@item @code{rssi-sampling-period} (default: @code{"0xFF"}) +Default RSSI Sampling Period. This is used when a client registers an +advertisement monitor and leaves the RSSISamplingPeriod unset. + +Possible values are: +@itemize @bullet +@item +@code{"0x00"}: Report all advertisements + +@item +@code{"N = 0xXX"}: Report advertisements every N x 100 msec (range: 0x01 to 0xFE) + +@item +@code{"0xFF"}: Report only one advertisement per device during monitoring period. +@end itemize + +@end table +@end deftp + @defvr {Scheme Variable} gnome-keyring-service-type This is the type of the service that adds the @uref{https://wiki.gnome.org/Projects/GnomeKeyring, GNOME Keyring}. Its @@ -20562,7 +20998,6 @@ and ``passwd'' is with the value @code{passwd}. @end table @end deftp - @node Sound Services @subsection Sound Services diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index 64d0e85301..a8c87a5697 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -339,7 +339,7 @@ (define* (geoclue-configuration-file config) (geoclue-configuration-submission-nick config) "\n" (string-join (geoclue-configuration-applications config) - "\n")))) + "\n")))) (define (geoclue-dbus-service config) (list (wrapped-dbus-service (geoclue-configuration-geoclue config) @@ -402,14 +402,367 @@ (define-record-type* bluetooth-configuration make-bluetooth-configuration bluetooth-configuration? (bluez bluetooth-configuration-bluez (default bluez)) - (auto-enable? bluetooth-configuration-auto-enable? (default #f))) + + ;;; [General] + (name bluetooth-configuration-name (default "BlueZ")) + (class bluetooth-configuration-class (default "0x000000")) + (discoverable-timeout + bluetooth-configuration-discoverable-timeout (default 180)) + (always-pairable? bluetooth-configuration-always-pairable? (default #f)) + (pairable-timeout bluetooth-configuration-pairable-timeout (default 0)) + (device-id bluetooth-configuration-device-id (default #f)) + (reverse-service-discovery? + bluetooth-configuration-reverse-service-discovery (default #t)) + (name-resolving? bluetooth-configuration-name-resolving? (default #t)) + (debug-keys? bluetooth-configuration-debug-keys? (default #f)) + + ;;; Possible values: + ;;; 'dual, 'bredr, 'le + (controller-mode bluetooth-configuration-controller-mode (default 'dual)) + + ;;; Possible values: + ;;; 'off, 'single, 'multiple + (multi-profile bluetooth-configuration-multi-profile (default 'off)) + (fast-connectable? bluetooth-configuration-fast-connectable? (default #f)) + + ;;; Possible values: + ;;; for LE mode: 'off, 'network/on, 'device + ;;; for Dual mode: 'off, 'network/on', 'device, 'limited-network, 'limited-device + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n68 + (privacy bluetooth-configuration-privacy (default 'off)) + + ;;; Possible values: + ;;; 'never, 'confirm, 'always + (just-works-repairing + bluetooth-configuration-just-works-repairing (default 'never)) + (temporary-timeout bluetooth-configuration-temporary-timeout (default 30)) + (refresh-discovery? bluetooth-configuration-refresh-discovery (default #t)) + + ;;; Possible values: 'true, 'false, + ;;; Possible UUIDs: + ;;; d4992530-b9ec-469f-ab01-6c481c47da1c (BlueZ Experimental Debug) + ;;; 671b10b5-42c0-4696-9227-eb28d1b049d6 (BlueZ Experimental Simultaneous Central and Peripheral) + ;;; 15c0a148-c273-11ea-b3de-0242ac130004 (BlueZ Experimental LL privacy) + ;;; 330859bc-7506-492d-9370-9a6f0614037f (BlueZ Experimental Bluetooth Quality Report) + ;;; a6695ace-ee7f-4fb9-881a-5fac66c629af (BlueZ Experimental Offload Codecs) + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n110 + (experimental bluetooth-configuration-experimental (default 'false)) + (remote-name-request-retry-delay + bluetooth-configuration-remote-name-request-retry-delay (default 300)) + + ;;; [BR] + (page-scan-type bluetooth-configuration-page-scan-type (default #f)) + (page-scan-interval bluetooth-configuration-page-scan-interval (default #f)) + (page-scan-window bluetooth-configuration-page-scan-window (default #f)) + (inquiry-scan-type bluetooth-configuration-inquiry-scan-type (default #f)) + (inquiry-scan-interval bluetooth-configuration-inquiry-scan-interval (default #f)) + (inquiry-scan-window bluetooth-configuration-inquiry-scan-window (default #f)) + (link-supervision-timeout bluetooth-configuration-link-supervision-timeout (default #f)) + (page-timeout bluetooth-configuration-page-timeout (default #f)) + (min-sniff-interval bluetooth-configuration-min-sniff-interval (default #f)) + (max-sniff-interval bluetooth-configuration-max-sniff-interval (default #f)) + + ;;; [LE] + (min-advertisement-interval + bluetooth-configuration-min-advertisement-interval (default #f)) + (max-advertisement-interval + bluetooth-configuration-max-advertisement-interval (default #f)) + (multi-advertisement-rotation-interval + bluetooth-configuration-multi-advertisement-rotation-interval (default #f)) + (scan-interval-auto-connect + bluetooth-configuration-scan-interval-auto-connect (default #f)) + (scan-window-auto-connect + bluetooth-configuration-scan-window-auto-connect (default #f)) + (scan-interval-suspend + bluetooth-configuration-scan-interval-suspend (default #f)) + (scan-window-suspend + bluetooth-configuration-scan-window-suspend (default #f)) + (scan-interval-discovery + bluetooth-configuration-scan-interval-discovery (default #f)) + (scan-window-discovery + bluetooth-configuration-scan-window-discovery (default #f)) + (scan-interval-adv-monitor + bluetooth-configuration-scan-interval-adv-monitor (default #f)) + (scan-window-adv-monitor + bluetooth-configuration-scan-window-adv-monitor (default #f)) + (scan-interval-connect + bluetooth-configuration-scan-interval-connect (default #f)) + (scan-window-connect + bluetooth-configuration-scan-window-connect (default #f)) + (min-connection-interval + bluetooth-configuration-min-connection-interval (default #f)) + (max-connection-interval + bluetooth-configuration-max-connection-interval (default #f)) + (connection-latency + bluetooth-configuration-connection-latency (default #f)) + (connection-supervision-timeout + bluetooth-configuration-connection-supervision-timeout (default #f)) + (autoconnect-timeout + bluetooth-configuration-autoconnect-timeout (default #f)) + (adv-mon-allowlist-scan-duration + bluetooth-configuration-adv-mon-allowlist-scan-duration (default 300)) + (adv-mon-no-filter-scan-duration + bluetooth-configuration-adv-mon-no-filter-scan-duration (default 500)) + (enable-adv-mon-interleave-scan + bluetooth-configuration-enable-adv-mon-interleave-scan (default 1)) + + ;;; [GATT] + ;;; Possible values: 'yes, 'no, 'always + (cache bluetooth-configuration-cache (default 'always)) + + ;;; Possible values: 7 ... 16, 0 (don't care) + (key-size bluetooth-configuration-key-size (default 0)) + + ;;; Possible values: 23 ... 517 + (exchange-mtu bluetooth-configuration-exchange-mtu (default 517)) + + ;;; Possible values: 1 ... 5 + (att-channels bluetooth-configuration-att-channels (default 3)) + + ;;; [AVDTP] + ;;; Possible values: 'basic, 'ertm + (session-mode bluetooth-configuration-session-mode (default 'basic)) + + ;;; Possible values: 'basic, 'streaming + (stream-mode bluetooth-configuration-stream-mode (default 'basic)) + + ;;; [Policy] + (reconnect-uuids bluetooth-configuration-reconnect-uuids (default '())) + (reconnect-attempts bluetooth-configuration-reconnect-attempts (default 7)) + (reconnect-intervals bluetooth-configuration-reconnect-intervals + (default (list 1 2 4 8 16 32 64))) + (auto-enable? bluetooth-configuration-auto-enable? (default #f)) + (resume-delay bluetooth-configuration-resume-delay (default 2)) + + ;;; [AdvMon] + ;;; Possible values: + ;;; "0x00", "0xFF", + ;;; "N = 0x00" ... "N = 0xFF" + ;;; Source: https://git.kernel.org/pub/scm/bluetooth/bluez.git/tree/src/main.conf#n286 + (rssi-sampling-period bluetooth-configuration-rssi-sampling-period + (default "0xFF"))) (define (bluetooth-configuration-file config) "Return a configuration file for the systemd bluetooth service, as a string." (string-append - "[Policy]\n" - "AutoEnable=" (bool (bluetooth-configuration-auto-enable? - config)))) + "[General]" + "\nName = " (bluetooth-configuration-name config) + "\nClass = " (bluetooth-configuration-class config) + "\nDiscoverableTimeout = " (number->string + (bluetooth-configuration-discoverable-timeout + config)) + "\nAlwaysPairable = " (bool (bluetooth-configuration-always-pairable? + config)) + "\nPairableTimeout = " (number->string + (bluetooth-configuration-pairable-timeout + config)) + (if (bluetooth-configuration-device-id config) + (string-append "\nDeviceID = " (bluetooth-configuration-device-id config)) + "") + "\nReverseServiceDiscovery = " (bool + (bluetooth-configuration-reverse-service-discovery + config)) + "\nNameResolving = " (bool (bluetooth-configuration-name-resolving? config)) + "\nDebugKeys = " (bool (bluetooth-configuration-debug-keys? config)) + "\nControllerMode = " (symbol->string + (bluetooth-configuration-controller-mode config)) + "\nMultiProfile = " (symbol->string (bluetooth-configuration-multi-profile + config)) + "\nFastConnectable = " (bool (bluetooth-configuration-fast-connectable? config)) + "\nPrivacy = " (symbol->string (bluetooth-configuration-privacy config)) + "\nJustWorksRepairing = " (symbol->string + (bluetooth-configuration-just-works-repairing config)) + "\nTemporaryTimeout = " (number->string + (bluetooth-configuration-temporary-timeout config)) + "\nRefreshDiscovery = " (bool (bluetooth-configuration-refresh-discovery config)) + "\nExperimental = " (symbol->string (bluetooth-configuration-experimental config)) + "\nRemoteNameRequestRetryDelay = " (number->string + (bluetooth-configuration-remote-name-request-retry-delay + config)) + "\n[BR]" + (if (bluetooth-configuration-page-scan-type config) + (string-append + "\nPageScanType = " + (number->string (bluetooth-configuration-page-scan-type config))) + "") + (if (bluetooth-configuration-page-scan-interval config) + (string-append + "\nPageScanInterval = " + (number->string (bluetooth-configuration-page-scan-interval config))) + "") + (if (bluetooth-configuration-page-scan-window config) + (string-append + "\nPageScanWindow = " + (number->string (bluetooth-configuration-page-scan-window config))) + "") + (if (bluetooth-configuration-inquiry-scan-type config) + (string-append + "\nInquiryScanType = " + (number->string (bluetooth-configuration-inquiry-scan-type config))) + "") + (if (bluetooth-configuration-inquiry-scan-interval config) + (string-append + "\nInquiryScanInterval = " + (number->string (bluetooth-configuration-inquiry-scan-interval config))) + "") + (if (bluetooth-configuration-inquiry-scan-window config) + (string-append + "\nInquiryScanWindow = " + (number->string (bluetooth-configuration-inquiry-scan-window config))) + "") + (if (bluetooth-configuration-link-supervision-timeout config) + (string-append + "\nLinkSupervisionTimeout = " + (number->string (bluetooth-configuration-link-supervision-timeout config))) + "") + (if (bluetooth-configuration-page-timeout config) + (string-append + "\nPageTimeout = " + (number->string (bluetooth-configuration-page-timeout config))) + "") + (if (bluetooth-configuration-min-sniff-interval config) + (string-append + "\nMinSniffInterval = " + (number->string (bluetooth-configuration-min-sniff-interval config))) + "") + (if (bluetooth-configuration-max-sniff-interval config) + (string-append + "\nMaxSniffInterval = " + (number->string (bluetooth-configuration-max-sniff-interval config))) + "") + + "\n[LE]" + (if (bluetooth-configuration-min-advertisement-interval config) + (string-append + "\nMinAdvertisementInterval = " + (number->string (bluetooth-configuration-min-advertisement-interval config))) + "") + (if (bluetooth-configuration-max-advertisement-interval config) + (string-append + "\nMaxAdvertisementInterval = " + (number->string (bluetooth-configuration-max-advertisement-interval config))) + "") + (if (bluetooth-configuration-multi-advertisement-rotation-interval config) + (string-append + "\nMultiAdvertisementRotationInterval = " + (number->string + (bluetooth-configuration-multi-advertisement-rotation-interval config))) + "") + (if (bluetooth-configuration-scan-interval-auto-connect config) + (string-append + "\nScanIntervalAutoConnect = " + (number->string (bluetooth-configuration-scan-interval-auto-connect config))) + "") + (if (bluetooth-configuration-scan-window-auto-connect config) + (string-append + "\nScanWindowAutoConnect = " + (number->string (bluetooth-configuration-scan-window-auto-connect config))) + "") + (if (bluetooth-configuration-scan-interval-suspend config) + (string-append + "\nScanIntervalSuspend = " + (number->string (bluetooth-configuration-scan-interval-suspend config))) + "") + (if (bluetooth-configuration-scan-window-suspend config) + (string-append + "\nScanWindowSuspend = " + (number->string (bluetooth-configuration-scan-window-suspend config))) + "") + (if (bluetooth-configuration-scan-interval-discovery config) + (string-append + "\nScanIntervalDiscovery = " + (number->string (bluetooth-configuration-scan-interval-discovery config))) + "") + (if (bluetooth-configuration-scan-window-discovery config) + (string-append + "\nScanWindowDiscovery = " + (number->string (bluetooth-configuration-scan-window-discovery config))) + "") + (if (bluetooth-configuration-scan-interval-adv-monitor config) + (string-append + "\nScanIntervalAdvMonitor = " + (number->string (bluetooth-configuration-scan-interval-adv-monitor config))) + "") + (if (bluetooth-configuration-scan-window-adv-monitor config) + (string-append + "\nScanWindowAdvMonitor = " + (number->string (bluetooth-configuration-scan-window-adv-monitor config))) + "") + (if (bluetooth-configuration-scan-interval-connect config) + (string-append + "\nScanIntervalConnect = " + (number->string (bluetooth-configuration-scan-interval-connect config))) + "") + (if (bluetooth-configuration-scan-window-connect config) + (string-append + "\nScanWindowConnect = " + (number->string (bluetooth-configuration-scan-window-connect config))) + "") + (if (bluetooth-configuration-min-connection-interval config) + (string-append + "\nMinConnectionInterval = " + (number->string (bluetooth-configuration-min-connection-interval config))) + "") + (if (bluetooth-configuration-max-connection-interval config) + (string-append + "\nMaxConnectionInterval = " + (number->string (bluetooth-configuration-max-connection-interval config))) + "") + (if (bluetooth-configuration-connection-latency config) + (string-append + "\nConnectionLatency = " + (number->string (bluetooth-configuration-connection-latency config))) + "") + (if (bluetooth-configuration-connection-supervision-timeout config) + (string-append + "\nConnectionSupervisionTimeout = " + (number->string (bluetooth-configuration-connection-supervision-timeout config))) + "") + (if (bluetooth-configuration-autoconnect-timeout config) + (string-append + "\nAutoconnecttimeout = " + (number->string (bluetooth-configuration-autoconnect-timeout config))) + "") + "\nAdvMonAllowlistScanDuration = " (number->string + (bluetooth-configuration-adv-mon-allowlist-scan-duration + config)) + "\nAdvMonNoFilterScanDuration = " (number->string + (bluetooth-configuration-adv-mon-no-filter-scan-duration + config)) + "\nEnableAdvMonInterleaveScan = " (number->string + (bluetooth-configuration-enable-adv-mon-interleave-scan + config)) + + "\n[GATT]" + "\nCache = " (symbol->string (bluetooth-configuration-cache config)) + "\nKeySize = " (number->string (bluetooth-configuration-key-size config)) + "\nExchangeMTU = " (number->string (bluetooth-configuration-exchange-mtu config)) + "\nChannels = " (number->string (bluetooth-configuration-att-channels config)) + + "\n[AVDTP]" + "\nSessionMode = " (symbol->string (bluetooth-configuration-session-mode config)) + "\nStreamMode = " (symbol->string (bluetooth-configuration-stream-mode config)) + + "\n[Policy]" + (if (not (eq? '() (bluetooth-configuration-reconnect-uuids config))) + (string-append + "\nReconnectUUIDs = " + (string-join (bluetooth-configuration-reconnect-uuids config) + ",")) + "") + "\nReconnectAttempts = " (number->string + (bluetooth-configuration-reconnect-attempts config)) + "\nReconnectIntervals = " (string-join + (map number->string + (bluetooth-configuration-reconnect-intervals + config)) + ",") + "\nAutoEnable = " (bool (bluetooth-configuration-auto-enable? + config)) + "\nResumeDelay = " (number->string (bluetooth-configuration-resume-delay config)) + + "\n[AdvMon]" + "\nRSSISamplingPeriod = " (bluetooth-configuration-rssi-sampling-period config))) (define (bluetooth-directory config) (computed-file "etc-bluetooth" -- 2.34.0 ------------=_1646865842-21933-5--