Package: guix-patches;
Reported by: Brice Waegeneire <brice <at> waegenei.re>
Date: Sat, 28 Mar 2020 14:00:02 UTC
Severity: normal
Tags: patch
Done: Danny Milosavljevic <dannym <at> scratchpost.org>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Nicolò Balzarotti <anothersms <at> gmail.com> To: Brice Waegeneire <brice <at> waegenei.re>, 40274 <at> debbugs.gnu.org Subject: [bug#40274] [PATCH] gnu: Add kernel-module-loader-service. Date: Tue, 31 Mar 2020 22:10:30 +0200
Hi, I found a typo /usefull/useful/ Nicolò Brice Waegeneire <brice <at> waegenei.re> writes: > * doc/guix.texi (Linux Services): Add a new subsection and document the > new service and its configuration. > * gnu/services/linux.scm (kernel-module-loader-service): New procedure. > (kernel-module-loader-service-type, kernel-module-loader-configuration): > New types. > --- > > This patch is related to the following thread: > https://lists.gnu.org/archive/html/guix-devel/2020-03/msg00381.html > > doc/guix.texi | 48 ++++++++++++++++++++++++++++++++++ > gnu/services/linux.scm | 58 +++++++++++++++++++++++++++++++++++++++++- > 2 files changed, 105 insertions(+), 1 deletion(-) > > diff --git a/doc/guix.texi b/doc/guix.texi > index 77a4b8ed71..a297ec249f 100644 > --- a/doc/guix.texi > +++ b/doc/guix.texi > @@ -75,6 +75,7 @@ Copyright @copyright{} 2020 Wiktor Żelazny@* > Copyright @copyright{} 2020 Damien Cassou@* > Copyright @copyright{} 2020 Jakub Kądziołka@* > Copyright @copyright{} 2020 Jack Hill@* > +Copyright @copyright{} 2020 Brice Waegeneire@* > > Permission is granted to copy, distribute and/or modify this document > under the terms of the GNU Free Documentation License, Version 1.3 or > @@ -25382,6 +25383,53 @@ notifications. > @end table > @end deftp > > +@cindex modprobe > +@cindex kernel module loader > +@subsubsection Kernel Module Loader Service > + > +The @code{kernel-module-loader-service} provides a service to load > +kernel modules at boot. This is especially usefull for modules that > +don't autoload and need to be manually loaded, like it's the case with > +@code{ddcci} for example. > + > +@deffn {Scheme Procedure} kernel-module-loader-service @var{modules} > +Return a service that run @command{modprobe} with arguments > +@var{modules} at boot. For example loading the drivers provided by > +@code{ddci-driver-linux} can be done as follow: > + > +@lisp > +(use-modules (gnu)) > +(use-package-modules linux) > +(use-service-modules linux) > +(operating-system > + ... > + (services (cons* (kernel-module-loader-service > + '("ddcci""ddcci_backlight")) > + %base-services)) > + (kernel-loadable-modules (list ddcci-driver-linux))) > +@end lisp > +@end defvr > + > +@deffn {Scheme Variable} kernel-module-loader-service-type > +The service type for loading kernel modules, that can't autoload, at > +boot, @command{modprobe}, on. Its value must be a > +@code{kernel-module-loader-configuration} object, described below. > + > +@deftp {Data Type} kernel-module-loader-configuration > +The data type representing the configuration of @command{sysctl}. > + > +@deftp {Data Type} kernel-module-loader-configuration > +This is the configuration record for the > +@code{kernel-module-loader-service-type}. > + > +@table @asis > +@item @code{modprobe} (default: @code{(file-append kmod "/bin/modprobe"}) > +The @command{modprobe} executable to use. > + > +@item @code{modules} (default: @code{'()}) > +A list specifying the modules to load. > +@end table > +@end deftp > > @node Miscellaneous Services > @subsection Miscellaneous Services > diff --git a/gnu/services/linux.scm b/gnu/services/linux.scm > index caa0326c31..99ab4a3329 100644 > --- a/gnu/services/linux.scm > +++ b/gnu/services/linux.scm > @@ -1,5 +1,6 @@ > ;;; GNU Guix --- Functional package management for GNU > ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer <at> gmail.com> > +;;; Copyright © 2020 Brice Waegeneire <brice <at> waegenei.re> > ;;; > ;;; This file is part of GNU Guix. > ;;; > @@ -37,7 +38,14 @@ > earlyoom-configuration-ignore-positive-oom-score-adj? > earlyoom-configuration-show-debug-messages? > earlyoom-configuration-send-notification-command > - earlyoom-service-type)) > + earlyoom-service-type > + > + kernel-module-loader-configuration > + kernel-module-loader-configuration? > + kernel-module-loader-configuration-modprobe > + kernel-module-loader-configuration-modules > + kernel-module-loader-service-type > + kernel-module-loader-service)) > > > ;;; > @@ -123,3 +131,51 @@ representation." > (list (service-extension shepherd-root-service-type > (compose list earlyoom-shepherd-service)))) > (description "Run @command{earlyoom}, the Early OOM daemon."))) > + > +;;; > +;;; Kernel module loader. > +;;; > + > +(define-record-type* <kernel-module-loader-configuration> > + kernel-module-loader-configuration make-kernel-module-loader-configuration > + kernel-module-loader-configuration? > + (modprobe kernel-module-loader-configuration-modprobe ; path of the 'modprobe' command > + (default (file-append kmod "/bin/modprobe"))) > + (modules kernel-module-loader-configuration-modules ; list of strings > + (default '()))) > + > +(define kernel-module-loader-shepherd-service > + (match-lambda > + (($ <kernel-module-loader-configuration> modprobe modules) > + (list > + (shepherd-service > + (documentation "Load kernel modules.") > + (provision '(kernel-module-loader)) > + (respawn? #f) > + (one-shot? #t) > + (start > + #~(lambda _ > + (zero? (system* #$modprobe #$@modules))))))))) > + > +(define kernel-module-loader-service-type > + (service-type > + (name 'kernel-module-loader) > + (description "Load kernel modules.") > + (extensions > + (list > + (service-extension shepherd-root-service-type > + kernel-module-loader-shepherd-service))) > + (compose concatenate) > + (extend (lambda (config modules) > + (kernel-module-loader-configuration > + (inherit config) > + (modules (append > + (kernel-module-loader-configuration-modules config) > + modules))))) > + (default-value (kernel-module-loader-configuration)))) > + > +(define* (kernel-module-loader-service modules) > + "Return a service that loads kernel MODULES." > + (service kernel-module-loader-service-type > + (kernel-module-loader-configuration > + (modules modules)))) > -- > 2.25.1
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.