* [bug#28647] [PATCH] services: base: Add file->udev-rule function.
@ 2017-09-29 15:58 Maxim Cournoyer
2017-10-03 13:18 ` Ludovic Courtès
2017-10-03 13:20 ` [bug#28647] [PATCH] " Ludovic Courtès
0 siblings, 2 replies; 6+ messages in thread
From: Maxim Cournoyer @ 2017-09-29 15:58 UTC (permalink / raw)
To: 28647
[-- Attachment #1: Type: text/plain, Size: 211 bytes --]
Hello,
While experimenting with udev rules, I found a need to be able to pass
file-like objects containing udev rules to the udev-service. This patch
implements a `file->udev-rule' method that does just that.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-services-base-Add-file-udev-rule-function.patch --]
[-- Type: text/x-patch, Size: 3372 bytes --]
From 050e96b3325f851f3118de0c881d25796d76049b Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Wed, 27 Sep 2017 21:33:25 -0400
Subject: [PATCH] services: base: Add file->udev-rule function.
This function allows passing a file-like object to the udev service.
* gnu/services/base.scm (file->udev-rule): New function.
* doc/guix.texi (Base Services): Document it.
---
doc/guix.texi | 15 ++++++++++++---
gnu/services/base.scm | 17 +++++++++++++++++
2 files changed, 29 insertions(+), 3 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index fff3fbd5f..a073dccb5 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -9707,11 +9707,20 @@ Return a service that runs the Guix build daemon according to
@var{config}.
@end deffn
-@deffn {Scheme Procedure} udev-service [#:udev udev]
+@deffn {Scheme Procedure} udev-service [#:udev @var{eudev} #:rules @code{'()}]
Run @var{udev}, which populates the @file{/dev} directory dynamically.
+Packages can be included in the @var{rules} list in order to extend the
+udev rules with the definitions found under their
+@file{lib/udev/rules.d} sub-directory.
+
+The functions @code{udev-rules} and @code{file->udev-rules} from
+@code{(gnu services base)} can be used to create rule objects based on a
+string or a file-like object, respectively. Those rule objects can be
+passed to udev-service just like packages.
+
@end deffn
-@deffn {Scheme Procedure} urandom-seed-service @var{#f}
+@deffn {Scheme Procedure} urandom-seed-service
Save some entropy in @var{%random-seed-file} to seed @file{/dev/urandom}
when rebooting.
@end deffn
@@ -9823,7 +9832,7 @@ to add @var{device} to the kernel's entropy pool. The service will fail if
@cindex session limits
@cindex ulimit
@cindex priority
-@deffn {Scheme Procedure} pam-limits-service [#:limits @var{limits}]
+@deffn {Scheme Procedure} pam-limits-service [#:limits @code{'()}]
Return a service that installs a configuration file for the
@uref{http://linux-pam.org/Linux-PAM-html/sag-pam_limits.html,
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 64620a9b0..711167a2f 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -71,6 +71,7 @@
udev-service-type
udev-service
udev-rule
+ file->udev-rule
login-configuration
login-configuration?
@@ -1628,6 +1629,22 @@ item of @var{packages}."
(lambda (port)
(display #$contents port)))))))
+(define (file->udev-rule file-name file)
+ "Return a directory with a udev rule file FILE-NAME which is a copy of FILE."
+ (computed-file file-name
+ (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils))
+
+ (define rules.d
+ (string-append #$output "/lib/udev/rules.d"))
+
+ (define file-copy-dest
+ (string-append rules.d "/" #$file-name))
+
+ (mkdir-p rules.d)
+ (copy-file #$file file-copy-dest)))))
+
(define kvm-udev-rule
;; Return a directory with a udev rule that changes the group of /dev/kvm to
;; "kvm" and makes it #o660. Apparently QEMU-KVM used to ship this rule,
--
2.14.1
[-- Attachment #3: Type: text/plain, Size: 65 bytes --]
Below is an operating-system declaration that makes use of it.
[-- Attachment #4: Sample config using the new method. --]
[-- Type: text/plain, Size: 3205 bytes --]
;; This is an operating system configuration template
;; for a "desktop" setup without full-blown desktop
;; environments.
(use-modules (gnu)
(gnu system nss)
(gnu services)
(gnu system shadow) ;for user-group
(guix download) ;for url-fetch
(guix gexp) ;for file-append
(guix packages) ;for origin
(guix store) ;for %default-substitute-urls
(srfi srfi-1)) ;for the remove function
(use-service-modules base ;for nscd-service-type
desktop
networking ;for wicd-service-type
ssh) ;for lsh-service
(use-package-modules admin ;for wpa-supplicant
ratpoison
certs)
(define 51-android-udev.rules
(let ((version "20170910"))
(origin
(method url-fetch)
(uri (string-append "https://raw.githubusercontent.com/M0Rf30/"
"android-udev-rules/" version "/51-android.rules"))
(sha256
(base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003")))))
(operating-system
(host-name "apteryx")
(timezone "America/Montreal") ;America/Los_Angeles, Asia/Tokyo
(locale "en_US.UTF-8")
;; Assuming /dev/sdX is the target hard disk, and "my-root"
;; is the label of the target root file system.
(bootloader (bootloader-configuration
(bootloader grub-bootloader)
(target "/dev/sda")))
(file-systems (cons (file-system
(device "my-root")
(title 'label)
(mount-point "/")
(type "ext4"))
%base-file-systems))
(users (cons (user-account
(name "maxim")
(comment "Maxim Cournoyer")
(group "users")
(supplementary-groups
'("lp" ;for bluetooth
"adbusers" ;for adb
"wheel" "netdev" "audio" "video"))
(home-directory "/home/maxim"))
%base-user-accounts))
;; Add plugdev to %base-groups
(groups (cons (user-group (system? #t) (name "adbusers")) %base-groups))
;; Add a bunch of window managers; we can choose one at
;; the log-in screen with F1.
(packages (cons* ratpoison
nss-certs ;for HTTPS access
%base-packages))
;; Use the "desktop" services, which include the X11
;; log-in service and more.
(services
(cons*
(bluetooth-service #:auto-enable? #t)
(modify-services %desktop-services
;; Add a couple extra substitute servers.
(guix-service-type config =>
(guix-configuration
(inherit config)
(substitute-urls
(cons* "https://bayfront.guixsd.org"
"https://berlin.guixsd.org"
%default-substitute-urls))))
;; Enable using adb as a simple user with a multitude of devices.
(udev-service-type
config =>
(udev-configuration
(inherit config)
(rules (cons*
(file->udev-rule "51-android-udev.rules" 51-android-udev.rules)
(udev-configuration-rules config))))))))
;; Allow resolution of '.local' host names with mDNS.
(name-service-switch %mdns-host-lookup-nss))
[-- Attachment #5: Type: text/plain, Size: 16 bytes --]
Thanks,
Maxim
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [bug#28647] [PATCH] services: base: Add file->udev-rule function.
2017-09-29 15:58 [bug#28647] [PATCH] services: base: Add file->udev-rule function Maxim Cournoyer
@ 2017-10-03 13:18 ` Ludovic Courtès
2017-10-22 22:16 ` Ludovic Courtès
2017-10-23 1:53 ` [bug#28647] [PATCHv2] " Maxim Cournoyer
2017-10-03 13:20 ` [bug#28647] [PATCH] " Ludovic Courtès
1 sibling, 2 replies; 6+ messages in thread
From: Ludovic Courtès @ 2017-10-03 13:18 UTC (permalink / raw)
To: Maxim Cournoyer; +Cc: 28647
Hi Maxim,
Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
> While experimenting with udev rules, I found a need to be able to pass
> file-like objects containing udev rules to the udev-service. This patch
> implements a `file->udev-rule' method that does just that.
Looks useful!
> From 050e96b3325f851f3118de0c881d25796d76049b Mon Sep 17 00:00:00 2001
> From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
> Date: Wed, 27 Sep 2017 21:33:25 -0400
> Subject: [PATCH] services: base: Add file->udev-rule function.
>
> This function allows passing a file-like object to the udev service.
>
> * gnu/services/base.scm (file->udev-rule): New function.
> * doc/guix.texi (Base Services): Document it.
[...]
> -@deffn {Scheme Procedure} udev-service [#:udev udev]
> +@deffn {Scheme Procedure} udev-service [#:udev @var{eudev} #:rules @code{'()}]
> Run @var{udev}, which populates the @file{/dev} directory dynamically.
> +Packages can be included in the @var{rules} list in order to extend the
> +udev rules with the definitions found under their
> +@file{lib/udev/rules.d} sub-directory.
> +
> +The functions @code{udev-rules} and @code{file->udev-rules} from
> +@code{(gnu services base)} can be used to create rule objects based on a
> +string or a file-like object, respectively. Those rule objects can be
> +passed to udev-service just like packages.
Could you document the procedures with @deffn so that they have an entry
in the index?
@deffn {Scheme Procedure} udev-rules @var{rules}
…
@end deffn
@deffn {Scheme Procedure} file->udev-rules @var{files}
Similar to @code{udev-rules}, but…
@end deffn
TIA!
Ludo’.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [bug#28647] [PATCH] services: base: Add file->udev-rule function.
2017-09-29 15:58 [bug#28647] [PATCH] services: base: Add file->udev-rule function Maxim Cournoyer
2017-10-03 13:18 ` Ludovic Courtès
@ 2017-10-03 13:20 ` Ludovic Courtès
1 sibling, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2017-10-03 13:20 UTC (permalink / raw)
To: Maxim Cournoyer; +Cc: 28647
Also, could you add an example in guix.texi that shows the use of the
Android udev rules that you submitted separately?
Thanks,
Ludo’.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [bug#28647] [PATCH] services: base: Add file->udev-rule function.
2017-10-03 13:18 ` Ludovic Courtès
@ 2017-10-22 22:16 ` Ludovic Courtès
2017-10-23 1:53 ` [bug#28647] [PATCHv2] " Maxim Cournoyer
1 sibling, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2017-10-22 22:16 UTC (permalink / raw)
To: Maxim Cournoyer; +Cc: 28647
Hey Maxim,
Just a friendly reminder. :-)
ludo@gnu.org (Ludovic Courtès) skribis:
> Hi Maxim,
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
>> While experimenting with udev rules, I found a need to be able to pass
>> file-like objects containing udev rules to the udev-service. This patch
>> implements a `file->udev-rule' method that does just that.
>
> Looks useful!
>
>> From 050e96b3325f851f3118de0c881d25796d76049b Mon Sep 17 00:00:00 2001
>> From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
>> Date: Wed, 27 Sep 2017 21:33:25 -0400
>> Subject: [PATCH] services: base: Add file->udev-rule function.
>>
>> This function allows passing a file-like object to the udev service.
>>
>> * gnu/services/base.scm (file->udev-rule): New function.
>> * doc/guix.texi (Base Services): Document it.
>
> [...]
>
>> -@deffn {Scheme Procedure} udev-service [#:udev udev]
>> +@deffn {Scheme Procedure} udev-service [#:udev @var{eudev} #:rules @code{'()}]
>> Run @var{udev}, which populates the @file{/dev} directory dynamically.
>> +Packages can be included in the @var{rules} list in order to extend the
>> +udev rules with the definitions found under their
>> +@file{lib/udev/rules.d} sub-directory.
>> +
>> +The functions @code{udev-rules} and @code{file->udev-rules} from
>> +@code{(gnu services base)} can be used to create rule objects based on a
>> +string or a file-like object, respectively. Those rule objects can be
>> +passed to udev-service just like packages.
>
> Could you document the procedures with @deffn so that they have an entry
> in the index?
>
> @deffn {Scheme Procedure} udev-rules @var{rules}
> …
> @end deffn
>
> @deffn {Scheme Procedure} file->udev-rules @var{files}
> Similar to @code{udev-rules}, but…
> @end deffn
>
> TIA!
>
> Ludo’.
ludo@gnu.org (Ludovic Courtès) skribis:
> Also, could you add an example in guix.texi that shows the use of the
> Android udev rules that you submitted separately?
>
> Thanks,
> Ludo’.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [bug#28647] [PATCHv2] services: base: Add file->udev-rule function.
2017-10-03 13:18 ` Ludovic Courtès
2017-10-22 22:16 ` Ludovic Courtès
@ 2017-10-23 1:53 ` Maxim Cournoyer
2017-10-23 2:39 ` Ludovic Courtès
1 sibling, 1 reply; 6+ messages in thread
From: Maxim Cournoyer @ 2017-10-23 1:53 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 28647
[-- Attachment #1: Type: text/plain, Size: 1937 bytes --]
Hi Ludovic, and sorry for the delayed reply!
ludo@gnu.org (Ludovic Courtès) writes:
> Hi Maxim,
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
>> While experimenting with udev rules, I found a need to be able to pass
>> file-like objects containing udev rules to the udev-service. This patch
>> implements a `file->udev-rule' method that does just that.
>
> Looks useful!
>
>> From 050e96b3325f851f3118de0c881d25796d76049b Mon Sep 17 00:00:00 2001
>> From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
>> Date: Wed, 27 Sep 2017 21:33:25 -0400
>> Subject: [PATCH] services: base: Add file->udev-rule function.
>>
>> This function allows passing a file-like object to the udev service.
>>
>> * gnu/services/base.scm (file->udev-rule): New function.
>> * doc/guix.texi (Base Services): Document it.
>
> [...]
>
>> -@deffn {Scheme Procedure} udev-service [#:udev udev]
>> +@deffn {Scheme Procedure} udev-service [#:udev @var{eudev} #:rules @code{'()}]
>> Run @var{udev}, which populates the @file{/dev} directory dynamically.
>> +Packages can be included in the @var{rules} list in order to extend the
>> +udev rules with the definitions found under their
>> +@file{lib/udev/rules.d} sub-directory.
>> +
>> +The functions @code{udev-rules} and @code{file->udev-rules} from
>> +@code{(gnu services base)} can be used to create rule objects based on a
>> +string or a file-like object, respectively. Those rule objects can be
>> +passed to udev-service just like packages.
>
> Could you document the procedures with @deffn so that they have an entry
> in the index?
>
> @deffn {Scheme Procedure} udev-rules @var{rules}
> …
> @end deffn
>
> @deffn {Scheme Procedure} file->udev-rules @var{files}
> Similar to @code{udev-rules}, but…
> @end deffn
>
I'm hoping the attached patch addresses the requested additions. Thanks
for the review and comments.
Maxim
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-services-base-Add-file-udev-rule-function.patch --]
[-- Type: text/x-patch, Size: 7570 bytes --]
From d2da854ad8d9d0d588c646e439ebfb7ef1c21f7c Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Wed, 27 Sep 2017 21:33:25 -0400
Subject: [PATCH] services: base: Add file->udev-rule function.
This function allows passing a file-like object to the udev service.
* gnu/services/base.scm (file->udev-rule): New function.
* doc/guix.texi (Base Services): Document it.
---
doc/guix.texi | 113 ++++++++++++++++++++++++++++++++++++++++++--------
gnu/services/base.scm | 17 ++++++++
2 files changed, 112 insertions(+), 18 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index b7f4f88f9..832ce8ac0 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -9790,35 +9790,112 @@ Return a service that runs the Guix build daemon according to
@var{config}.
@end deffn
-@cindex udev-service
-@cindex udev-rule
-@deffn {Scheme Procedure} udev-service [#:udev @var{udev}] [#:rules @var{'()}]
+@deffn {Scheme Procedure} udev-service [#:udev @var{eudev} #:rules @code{'()}]
Run @var{udev}, which populates the @file{/dev} directory dynamically.
-Additional udev rules can be provided as a list of files through the
-@var{rules} variable. The procedure @var{udev-rule} simplifies the
-creation of these rule files.
+udev rules can be provided as a list of files through the @var{rules}
+variable. The procedures @var{udev-rule} and @var{file->udev-rule} from
+@code{(gnu services base)} simplify the creation of such rule files.
+
+@deffn {Scheme Procedure} udev-rule [@var{file-name} @var{contents}]
+Return a udev-rule file named @var{file-name} containing the rules
+defined by the @var{contents} literal.
In the following example, a rule for a USB device is defined to be
-stored in the file @file{90-usb-thing.rules}, and the default
-@var{udev-service} is extended with it. The rule runs a script upon
-detecting a USB device with a given product identifier.
+stored in the file @file{90-usb-thing.rules}. The rule runs a script
+upon detecting a USB device with a given product identifier.
@example
(define %example-udev-rule
- (udev-rule "90-usb-thing.rules"
- "ACTION==\"add\", SUBSYSTEM==\"usb\", ATTR@{product@}==\"Example\", RUN+=\"/path/to/script\""))
+ (udev-rule
+ "90-usb-thing.rules"
+ (string-append "ACTION==\"add\", SUBSYSTEM==\"usb\", "
+ "ATTR@{product@}==\"Example\", "
+ "RUN+=\"/path/to/script\"")))
+@end example
+@end deffn
+
+Here we show how the default @var{udev-service} can be extended with it.
+
+@example
+(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))))))))
+@end example
+
+@deffn {Scheme Procedure} file->udev-rule [@var{file-name} @var{file}]
+Return a udev file named @var{file-name} containing the rules defined
+within @var{file}, a file-like object.
+
+The following example showcases how we can use an existing rule file.
+
+@example
+(use-modules (guix download) ;for url-fetch
+ (guix packages) ;for origin
+ ;; @dots{})
+
+(define %android-udev-rules
+ (file->udev-rule
+ "51-android-udev.rules"
+ (let ((version "20170910"))
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://raw.githubusercontent.com/M0Rf30/"
+ "android-udev-rules/" version "/51-android.rules"))
+ (sha256
+ (base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003"))))))
+@end example
+@end deffn
+
+Additionally, Guix package definitions can be included in @var{rules} in
+order to extend the udev rules with the definitions found under their
+@file{lib/udev/rules.d} sub-directory. In lieu of the previous
+@var{file->udev-rule} example, we could have used the
+@var{android-udev-rules} package which exists in Guix in the @code{(gnu
+packages android)} module.
+
+The following example shows how to use the @var{android-udev-rules}
+package so that the Android tool @command{adb} can detect devices
+without root privileges. It also details how to create the
+@code{adbusers} group, which is required for the proper functioning of
+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.
+
+@example
+(use-modules (gnu packages android) ;for android-udev-rules
+ (gnu system shadow) ;for user-group
+ ;; @dots{})
(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))))))))
+ (users (cons (user-acount
+ ;; @dots{}
+ (supplementary-groups
+ '("adbusers" ;for adb
+ "wheel" "netdev" "audio" "video"))
+ ;; @dots{})))
+
+ (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))))))))
@end example
@end deffn
-@deffn {Scheme Procedure} urandom-seed-service @var{#f}
+@deffn {Scheme Procedure} urandom-seed-service
Save some entropy in @var{%random-seed-file} to seed @file{/dev/urandom}
when rebooting.
@end deffn
@@ -9930,7 +10007,7 @@ to add @var{device} to the kernel's entropy pool. The service will fail if
@cindex session limits
@cindex ulimit
@cindex priority
-@deffn {Scheme Procedure} pam-limits-service [#:limits @var{limits}]
+@deffn {Scheme Procedure} pam-limits-service [#:limits @code{'()}]
Return a service that installs a configuration file for the
@uref{http://linux-pam.org/Linux-PAM-html/sag-pam_limits.html,
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 541ca76f1..b605614ab 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -71,6 +71,7 @@
udev-service-type
udev-service
udev-rule
+ file->udev-rule
login-configuration
login-configuration?
@@ -1630,6 +1631,22 @@ item of @var{packages}."
(lambda (port)
(display #$contents port)))))))
+(define (file->udev-rule file-name file)
+ "Return a directory with a udev rule file FILE-NAME which is a copy of FILE."
+ (computed-file file-name
+ (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils))
+
+ (define rules.d
+ (string-append #$output "/lib/udev/rules.d"))
+
+ (define file-copy-dest
+ (string-append rules.d "/" #$file-name))
+
+ (mkdir-p rules.d)
+ (copy-file #$file file-copy-dest)))))
+
(define kvm-udev-rule
;; Return a directory with a udev rule that changes the group of /dev/kvm to
;; "kvm" and makes it #o660. Apparently QEMU-KVM used to ship this rule,
--
2.14.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [bug#28647] [PATCHv2] services: base: Add file->udev-rule function.
2017-10-23 1:53 ` [bug#28647] [PATCHv2] " Maxim Cournoyer
@ 2017-10-23 2:39 ` Ludovic Courtès
0 siblings, 0 replies; 6+ messages in thread
From: Ludovic Courtès @ 2017-10-23 2:39 UTC (permalink / raw)
To: Maxim Cournoyer; +Cc: 28647
Hi Maxim,
Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
> I'm hoping the attached patch addresses the requested additions. Thanks
> for the review and comments.
It does!
> From d2da854ad8d9d0d588c646e439ebfb7ef1c21f7c Mon Sep 17 00:00:00 2001
> From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
> Date: Wed, 27 Sep 2017 21:33:25 -0400
> Subject: [PATCH] services: base: Add file->udev-rule function.
>
> This function allows passing a file-like object to the udev service.
>
> * gnu/services/base.scm (file->udev-rule): New function.
> * doc/guix.texi (Base Services): Document it.
Applied, thanks!
Ludo’.
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-10-23 2:40 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-29 15:58 [bug#28647] [PATCH] services: base: Add file->udev-rule function Maxim Cournoyer
2017-10-03 13:18 ` Ludovic Courtès
2017-10-22 22:16 ` Ludovic Courtès
2017-10-23 1:53 ` [bug#28647] [PATCHv2] " Maxim Cournoyer
2017-10-23 2:39 ` Ludovic Courtès
2017-10-03 13:20 ` [bug#28647] [PATCH] " Ludovic Courtès
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.