From debbugs-submit-bounces@debbugs.gnu.org Sun Apr 05 15:51:54 2020 Received: (at submit) by debbugs.gnu.org; 5 Apr 2020 19:51:54 +0000 Received: from localhost ([127.0.0.1]:46643 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jLBJB-0002sq-Rq for submit@debbugs.gnu.org; Sun, 05 Apr 2020 15:51:54 -0400 Received: from lists.gnu.org ([209.51.188.17]:41294) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jLBJA-0002sf-CK for submit@debbugs.gnu.org; Sun, 05 Apr 2020 15:51:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44571) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jLBJ8-0006xp-TJ for guix-patches@gnu.org; Sun, 05 Apr 2020 15:51:52 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=BAYES_50,RCVD_IN_DNSWL_LOW, URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jLBJ7-0007wp-Cc for guix-patches@gnu.org; Sun, 05 Apr 2020 15:51:50 -0400 Received: from relay5-d.mail.gandi.net ([217.70.183.197]:53879) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jLBJ7-0007wX-49 for guix-patches@gnu.org; Sun, 05 Apr 2020 15:51:49 -0400 X-Originating-IP: 78.237.113.178 Received: from localhost (luy13-1-78-237-113-178.fbx.proxad.net [78.237.113.178]) (Authenticated sender: brice@waegenei.re) by relay5-d.mail.gandi.net (Postfix) with ESMTPSA id 6F2881C0007 for ; Sun, 5 Apr 2020 19:51:47 +0000 (UTC) From: Brice Waegeneire To: guix-patches@gnu.org Subject: [PATCH] services: Add udev-rules-service helper. Date: Sun, 5 Apr 2020 21:51:41 +0200 Message-Id: <20200405195141.21985-1-brice@waegenei.re> X-Mailer: git-send-email 2.26.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 217.70.183.197 X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: submit 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 (-) * doc/guix.texi (Base services): Add documentation for 'udev-rules-service'. Replace examples of 'udev-service-type' extension with 'udev-rules-service'. * gnu/services/base.scm (udev-rules-service): New procedure. --- doc/guix.texi | 46 +++++++++++++++++++++---------------------- gnu/services/base.scm | 22 +++++++++++++++++++++ 2 files changed, 45 insertions(+), 23 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index bc5602474e..da7fbbc12c 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -12785,8 +12785,12 @@ A directory path where the @command{guix-daemon} will perform builds. @deffn {Scheme Procedure} udev-service [#:udev @var{eudev} #:rules @code{'()}] Run @var{udev}, which populates the @file{/dev} directory dynamically. udev rules can be provided as a list of files through the @var{rules} -variable. The procedures @code{udev-rule} and @code{file->udev-rule} from -@code{(gnu services base)} simplify the creation of such rule files. +variable. The procedures @code{udev-rule}, @code{udev-rules-service} +and @code{file->udev-rule} from @code{(gnu services base)} simplify the +creation of such rule files. + +The @command{herd rules udev} command, as root, returns the name of the +directory containing all the active udev rules. @end deffn @deffn {Scheme Procedure} udev-rule [@var{file-name} @var{contents}] @@ -12805,23 +12809,27 @@ upon detecting a USB device with a given product identifier. "ATTR@{product@}==\"Example\", " "RUN+=\"/path/to/script\""))) @end lisp - -The @command{herd rules udev} command, as root, returns the name of the -directory containing all the active udev rules. @end deffn -Here we show how the default @var{udev-service} can be extended with it. +@deffn {Scheme Procedure} udev-rules-service [@var{name} @var{rules}] @ + [#:groups @var{groups}] +Return a service that extends @code{udev-service-type } with @var{rules} +and @code{account-service-type} with @var{groups} as system groups. +This works by creating a singleton service type +@var{name}@code{-udev-rules}, of which the returned service is an +instance. + +Here we show how it can be used to extend @var{udev-service} with the +previously defined rule @code{%example-udev-rule}. @lisp (operating-system ;; @dots{} (services - (modify-services %desktop-services - (udev-service-type config => - (udev-configuration (inherit config) - (rules (append (udev-configuration-rules config) - (list %example-udev-rule)))))))) + (cons* (udev-rules-service 'usb-thing %example-udev-rule) + %desktop-services))) @end lisp +@end deffn @deffn {Scheme Procedure} file->udev-rule [@var{file-name} @var{file}] Return a udev file named @var{file-name} containing the rules defined @@ -12861,7 +12869,7 @@ without root privileges. It also details how to create the the rules defined within the @var{android-udev-rules} package. To create such a group, we must define it both as part of the @var{supplementary-groups} of our @var{user-account} declaration, as -well as in the @var{groups} field of the @var{operating-system} record. +well as in the @var{groups} of the @var{udev-rules-service} procedure. @lisp (use-modules (gnu packages android) ;for android-udev-rules @@ -12875,19 +12883,11 @@ well as in the @var{groups} field of the @var{operating-system} record. (supplementary-groups '("adbusers" ;for adb "wheel" "netdev" "audio" "video"))))) - - (groups (cons (user-group (system? #t) (name "adbusers")) - %base-groups)) - ;; @dots{} - (services - (modify-services %desktop-services - (udev-service-type - config => - (udev-configuration (inherit config) - (rules (cons android-udev-rules - (udev-configuration-rules config)))))))) + (cons* (udev-rules-service 'android android-udev-rules + #:groups '("adbusers")) + %desktop-services))) @end lisp @defvr {Scheme Variable} urandom-seed-service-type diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 8d9a563e2b..070765ab83 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2019 John Soo ;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen ;;; Copyright © 2020 Florian Pelz +;;; Copyright © 2020 Brice Waegeneire ;;; ;;; This file is part of GNU Guix. ;;; @@ -92,6 +93,7 @@ udev-service udev-rule file->udev-rule + udev-rules-service login-configuration login-configuration? @@ -2122,6 +2124,26 @@ extra rules from the packages listed in @var{rules}." (service udev-service-type (udev-configuration (udev udev) (rules rules)))) +(define* (udev-rules-service name rules #:key (groups '())) + "Return a service that extends udev-service-type with RULES and +account-service-type with GROUPS as system groups. This works by creating a +singleton service type NAME-udev-rules, of which the returned service is an +instance." + (let* ((name (symbol-append name '-udev-rules)) + (account-extension + (const (map (lambda (group) + (user-group (name group) (system? #t))) + groups))) + (udev-extension (const (list rules))) + (type (service-type + (name name) + (extensions (list + (service-extension + account-service-type account-extension) + (service-extension + udev-service-type udev-extension)))))) + (service type #f))) + (define swap-service-type (shepherd-service-type 'swap -- 2.26.0 From debbugs-submit-bounces@debbugs.gnu.org Mon Apr 06 10:49:51 2020 Received: (at 40454) by debbugs.gnu.org; 6 Apr 2020 14:49:51 +0000 Received: from localhost ([127.0.0.1]:49032 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jLT4R-0002En-1t for submit@debbugs.gnu.org; Mon, 06 Apr 2020 10:49:51 -0400 Received: from relay1-d.mail.gandi.net ([217.70.183.193]:37265) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jLT4O-0002EQ-UU for 40454@debbugs.gnu.org; Mon, 06 Apr 2020 10:49:49 -0400 Received: from webmail.gandi.net (webmail18.sd4.0x35.net [10.200.201.18]) (Authenticated sender: brice@waegenei.re) by relay1-d.mail.gandi.net (Postfix) with ESMTPA id 24C7B240003; Mon, 6 Apr 2020 14:49:41 +0000 (UTC) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Date: Mon, 06 Apr 2020 14:49:41 +0000 From: Brice Waegeneire To: 40454@debbugs.gnu.org Subject: Re: [bug#40454] [PATCH] services: Add udev-rules-service helper. In-Reply-To: <20200405195141.21985-1-brice@waegenei.re> References: <20200405195141.21985-1-brice@waegenei.re> Message-ID: <47883c43b2a6a8cb6c261858b1e5183e@waegenei.re> X-Sender: brice@waegenei.re User-Agent: Roundcube Webmail/1.3.8 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 40454 Cc: Guix-patches 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 (-) Hello Guix, I forgot to explain what this patch does, it's a helper for “udev-service-type”. Here are some examples I use it for: (udev-rules-service 'adb android-udev-rules #:groups '("adbusers")) (udev-rules-service 'backlight brightnessctl #:groups '("video" "input")) (udev-rules-service 'u2f libu2f-host #:groups '("plugdev")) - Brice From debbugs-submit-bounces@debbugs.gnu.org Wed Apr 22 13:11:24 2020 Received: (at 40454-done) by debbugs.gnu.org; 22 Apr 2020 17:11:24 +0000 Received: from localhost ([127.0.0.1]:53079 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jRIuB-0000Ht-VS for submit@debbugs.gnu.org; Wed, 22 Apr 2020 13:11:24 -0400 Received: from eggs.gnu.org ([209.51.188.92]:56000) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jRIuA-0000Hd-I3 for 40454-done@debbugs.gnu.org; Wed, 22 Apr 2020 13:11:22 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:33641) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jRIu4-0002Hn-4q; Wed, 22 Apr 2020 13:11:16 -0400 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=52862 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jRIu2-0004Re-LV; Wed, 22 Apr 2020 13:11:15 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Brice Waegeneire Subject: Re: [bug#40454] [PATCH] services: Add udev-rules-service helper. References: <20200405195141.21985-1-brice@waegenei.re> Date: Wed, 22 Apr 2020 19:11:12 +0200 In-Reply-To: <20200405195141.21985-1-brice@waegenei.re> (Brice Waegeneire's message of "Sun, 5 Apr 2020 21:51:41 +0200") Message-ID: <87lfmnv427.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (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: 40454-done Cc: 40454-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, Brice Waegeneire skribis: > * doc/guix.texi (Base services): Add documentation for > 'udev-rules-service'. Replace examples of 'udev-service-type' extension > with 'udev-rules-service'. > * gnu/services/base.scm (udev-rules-service): New procedure. Definitely more convenient than using =E2=80=98modify-services=E2=80=99 & c= o. Applied, thanks! Ludo=E2=80=99. From unknown Sun Jun 22 04:07:07 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 21 May 2020 11:24:06 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator