From: raid5atemyhomework <raid5atemyhomework@protonmail.com>
To: Carlo Zancanaro <carlo@zancanaro.id.au>
Cc: "guix-devel@gnu.org" <guix-devel@gnu.org>
Subject: Re: ZFS on Guix
Date: Tue, 05 Jan 2021 14:56:45 +0000 [thread overview]
Message-ID: <G3lZk93u7szffMisrbflaH1XWV441PPGyEZ91FVnByxuY8YqZJtj8QgMDBk3Caz5QrPHaIfjceeHDH7QWvr-DO5B10h-MK6GrQfN7nqr5fA=@protonmail.com> (raw)
In-Reply-To: <guGWV_uA7tRqi0SzCiial7b5W7uKlmcMRhQXIlhtzyf1Fgq91eakr8d5EQrZ2fJPJK1OqKMCJfMgE2H4SjRSph-31ms_2g-mFiddv9ppiaQ=@protonmail.com>
Hi Carlo and guix-developers,
I have this patch below for creating a new `kernel-loadable-module-service-type`, which can be extended by another service to add kernel-loadable modules provided by packages, hope for a review.
From 984602faba1e18b9eb64e62970147aab653d997f Mon Sep 17 00:00:00 2001
From: raid5atemyhomework <raid5atemyhomework@protonmail.com>
Date: Tue, 5 Jan 2021 22:27:56 +0800
Subject: [PATCH] gnu: Add 'kernel-loadable-module-service-type' for services
to extend with kernel-loadable modules.
---
doc/guix.texi | 6 +++++
gnu/services.scm | 68 ++++++++++++++++++++++++++++++++++++++++++++++++
gnu/system.scm | 36 +++++++------------------
3 files changed, 83 insertions(+), 27 deletions(-)
diff --git a/doc/guix.texi b/doc/guix.texi
index 0f6e95a65a..78770151e3 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -32409,6 +32409,12 @@ configuration when you use @command{guix system reconfigure},
@command{guix system init}, or @command{guix deploy}.
@end defvr
+@defvr {Scheme Variable} kernel-loadable-module-service-type
+Type of the service that collects lists of packages containing
+kernel-loadable modules, and adds them to the set of kernel-loadable
+modules.
+@end defvr
+
@node Shepherd Services
@subsection Shepherd Services
diff --git a/gnu/services.scm b/gnu/services.scm
index 13259dfaee..2c0bbf9725 100644
--- a/gnu/services.scm
+++ b/gnu/services.scm
@@ -33,6 +33,8 @@
#:use-module (guix diagnostics)
#:autoload (guix openpgp) (openpgp-format-fingerprint)
#:use-module (guix modules)
+ #:use-module (guix packages)
+ #:use-module (guix utils)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages hurd)
@@ -75,6 +77,7 @@
service-back-edges
instantiate-missing-services
fold-services
+ kernel-loadable-module-service
service-error?
missing-value-service-error?
@@ -106,6 +109,7 @@
profile-service-type
firmware-service-type
gc-root-service-type
+ kernel-loadable-module-service-type
%boot-service
%activation-service
@@ -864,6 +868,70 @@ as Wifi cards.")))
will not be reclaimed by the garbage collector.")
(default-value '())))
+;; Configuration for the kernel builder.
+;; Only used by the KERNEL-LOADABLE-MODULE-SERVICE-TYPE.
+(define-record-type* <kernel-builder-configuration> kernel-builder-configuration
+ make-kernel-builder-configuration
+ kernel-builder-configuration?
+ this-kernel-builder-configuration
+
+ (kernel kernel-builder-configuration-kernel (default #f))
+ (hurd kernel-builder-configuration-hurd (default #f))
+ (modules kernel-builder-configuration-modules (default '())))
+
+(define (package-for-kernel target-kernel module-package)
+ "Return a package like MODULE-PACKAGE, adapted for TARGET-KERNEL, if
+possible (that is if there's a LINUX keyword argument in the build system)."
+ (package
+ (inherit module-package)
+ (arguments
+ (substitute-keyword-arguments (package-arguments module-package)
+ ((#:linux kernel #f)
+ target-kernel)))))
+
+(define (kernel-builder-configuration->system-entry config)
+ "Return the kernel and hurd entries of the 'system' directory of OS."
+ (mbegin %store-monad
+ (let* ((kernel (kernel-builder-configuration-kernel config))
+ (hurd (kernel-builder-configuration-hurd config))
+ (modules (kernel-builder-configuration-modules config))
+ (kernel (if hurd
+ kernel
+ (profile
+ (content (packages->manifest
+ (cons kernel
+ (map (lambda (module)
+ (if (package? module)
+ (package-for-kernel kernel module)
+ module))
+ modules))))
+ (hooks (list linux-module-database))))))
+ (return `(("kernel" ,kernel)
+ ,@(if hurd `(("hurd" ,hurd)) '()))))))
+(define (kernel-builder-configuration-add-modules config modules)
+ "Constructs a kernel builder configuration that has its modules extended."
+ (kernel-builder-configuration
+ (inherit config)
+ (modules (append (kernel-builder-configuration-modules config) modules))))
+
+(define kernel-loadable-module-service-type
+ (service-type (name 'kernel-loadable-modules)
+ (extensions
+ (list (service-extension system-service-type
+ kernel-builder-configuration->system-entry)))
+ (compose concatenate)
+ (extend kernel-builder-configuration-add-modules)
+ (description
+ "Register packages containing kernel-loadable modules and adds them
+to the system.")))
+(define (kernel-loadable-module-service kernel hurd modules)
+ "Constructs the service that sets up kernel loadable modules."
+ (service kernel-loadable-module-service-type
+ (kernel-builder-configuration
+ (kernel kernel)
+ (hurd hurd)
+ (modules modules))))
+
\f
;;;
;;; Service folding.
diff --git a/gnu/system.scm b/gnu/system.scm
index c284a18379..a7f2365754 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -600,16 +600,6 @@ OS."
(file-append (operating-system-kernel os)
"/" (system-linux-image-file-name))))
-(define (package-for-kernel target-kernel module-package)
- "Return a package like MODULE-PACKAGE, adapted for TARGET-KERNEL, if
-possible (that is if there's a LINUX keyword argument in the build system)."
- (package
- (inherit module-package)
- (arguments
- (substitute-keyword-arguments (package-arguments module-package)
- ((#:linux kernel #f)
- target-kernel)))))
-
(define %default-modprobe-blacklist
;; List of kernel modules to blacklist by default.
'("usbmouse" ;races with bcm5974, see <https://bugs.gnu.org/35574>
@@ -625,26 +615,10 @@ possible (that is if there's a LINUX keyword argument in the build system)."
"Return the basic entries of the 'system' directory of OS for use as the
value of the SYSTEM-SERVICE-TYPE service."
(let* ((locale (operating-system-locale-directory os))
- (kernel (operating-system-kernel os))
(hurd (operating-system-hurd os))
- (modules (operating-system-kernel-loadable-modules os))
- (kernel (if hurd
- kernel
- (profile
- (content (packages->manifest
- (cons kernel
- (map (lambda (module)
- (if (package? module)
- (package-for-kernel kernel
- module)
- module))
- modules))))
- (hooks (list linux-module-database)))))
(initrd (and (not hurd) (operating-system-initrd-file os)))
(params (operating-system-boot-parameters-file os)))
- `(("kernel" ,kernel)
- ,@(if hurd `(("hurd" ,hurd)) '())
- ("parameters" ,params)
+ `(("parameters" ,params)
,@(if initrd `(("initrd" ,initrd)) '())
("locale" ,locale)))) ;used by libc
@@ -663,6 +637,10 @@ bookkeeping."
(host-name (host-name-service (operating-system-host-name os)))
(entries (operating-system-directory-base-entries os)))
(cons* (service system-service-type entries)
+ (kernel-loadable-module-service
+ (operating-system-kernel os)
+ (operating-system-hurd os)
+ (operating-system-kernel-loadable-modules os))
%boot-service
;; %SHEPHERD-ROOT-SERVICE must come last so that the gexp that
@@ -699,6 +677,10 @@ bookkeeping."
(define (hurd-default-essential-services os)
(let ((entries (operating-system-directory-base-entries os)))
(list (service system-service-type entries)
+ (kernel-loadable-module-service
+ (operating-system-kernel os)
+ (operating-system-hurd os)
+ (operating-system-kernel-loadable-modules os))
%boot-service
%hurd-startup-service
%activation-service
--
2.29.2
next prev parent reply other threads:[~2021-01-05 14:57 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-02 6:16 ZFS on Guix raid5atemyhomework
2021-01-02 6:40 ` raid5atemyhomework
2021-01-03 15:50 ` Danny Milosavljevic
[not found] ` <Kyzl4xnRrDtWbTkAmBf1i8mtSZvu-AYatdazY1NsABFAzqqi7HQl-t0d2LWAInr8n7KxGyJWfIfTWqrefrxdgWelKbr2SWc9ATV5P8zrVtw=3D@protonmail.com>
[not found] ` <DmzbKm-kVn1tCfYc4eAXeEEbj3RN28qvXJaLL6dHtBBeNdXE-e-vN-a4Y-De38H8jI5lt19mauUTz9k0JArMyOT2ciYoxKY8mXFw3xeHGqo=3D@protonmail.com>
[not found] ` <guGWV=5FuA7tRqi0SzCiial7b5W7uKlmcMRhQXIlhtzyf1Fgq91eakr8d5EQrZ2fJPJK1OqKMCJfMgE2H4SjRSph-31ms=5F2g-mFiddv9ppiaQ=3D@protonmail.com>
2021-01-04 0:50 ` raid5atemyhomework
2021-01-04 1:15 ` raid5atemyhomework
2021-01-05 11:02 ` raid5atemyhomework
2021-01-05 14:56 ` raid5atemyhomework [this message]
2021-01-06 0:59 ` Carlo Zancanaro
2021-01-06 3:50 ` raid5atemyhomework
2021-01-06 3:58 ` Carlo Zancanaro
[not found] ` <t=5Ft9LHglTTJw2Bhtd2xX4JCJeZBi5Drqg0t04vJsfRLfoENqpftZcuHO8LYi2AO05P71lbbCgQC5etCDiPsdcssJmw1pHGyCY3 gUT-9w9?= =?us-ascii?Q?=5Fo=3D@protonmail.com>
[not found] ` <Zd8uMcxWfNY1RxDn4gwrCZjHKAUxSQgcuBsNDAqa0tMqj=5FufQWE-URr7L49OBWMGDfQB8v=5F8eRdnhlsZTxU0Xq=5FF6tu-92jvvc1lSh-2tdA=3D@protonmail.com>
[not found] ` <vzCMYS=5FrSzkd3ZDA5TktzybU2LmfZsjWLmrd0ABQ1bIKyulAreAghoDBo0yjb-bEbH5ZmKhOO3D9WPjuDoMMUs0O eUWA1WakV?= =?us-ascii?Q?WFo6H61IHY=3D@protonmail.com>
[not found] ` <07kwAFNpjhGFe7ArkjjAtRhr564wvMPGhHFyjGb=5FXdmmPNddKTmT9Swky1NbbUxHBC4xw3p-m=5F3JyW16Ql9J7PLyk6UdhCsA2cdkHehdti8=3D@protonmail.com>
[not found] ` <VnQXBr-z8pdZxWrb6VtIu5pv0UeG1II5uUu4Q7BU3NsJMQbxhiQyWJE4fhEIWJO3VWrjetf1SMIu4=5Fgi5r2AlYq8dADCXCDwW30RYaJ6seA=3D@protonmail.com>
[not found] ` <BwsjjkFjW7wwYSYYp-YUhl5t1-1OtA8t3wbDftsQTZBXHNxcR2tBprzJmBYvNrMKnCeiu0d5bPz7V8IaKIdYu9NP7kDsd16z6gMPpR89-3c=3D@protonmail.c om>
[not found] ` <VnQXBr-z8pdZxWrb6VtIu5pv0UeG1II5uUu4Q7BU3NsJMQbxhiQyWJE4fhEIWJO3VWrjetf1SMIu4=5Fgi5r2AlY q8dADCXCD?= =?us-ascii?Q?wW30RYaJ6seA=3D@protonmail.com>
[not found] ` <BwsjjkFjW7wwYSYYp-YUhl5t1-1OtA8t3wbDftsQTZBXHNxcR2tBprzJmBYvNrMKnCeiu0d5bPz7V8IaKIdYu9NP7kDsd16z6gMPpR89-3c=3D@protonmail.com>
2021-01-06 4:41 ` raid5atemyhomework
2021-01-06 5:20 ` raid5atemyhomework
2021-01-06 15:58 ` raid5atemyhomework
2021-01-09 18:14 ` raid5atemyhomework
2021-01-10 5:17 ` raid5atemyhomework
2021-02-08 2:13 ` raid5atemyhomework
2021-02-08 3:51 ` Joshua Branson
2021-02-08 6:04 ` raid5atemyhomework
2021-02-08 6:13 ` raid5atemyhomework
2021-02-08 9:17 ` Maxime Devos
2021-02-08 9:32 ` raid5atemyhomework
2021-02-08 9:35 ` Maxime Devos
2021-02-10 8:29 ` Efraim Flashner
2021-02-08 2:16 ` Danny Milosavljevic
2021-02-10 7:37 ` raid5atemyhomework
[not found] <=5F1CLe9QSGsoMlu5WxBMXm4CbFLM=5FM9iRG1XQF9GDsK0GP208jpngdymfix4tAfoLP94mhMTt-Tx6OP2xN=5Fn78Jhx5KQzkiqPpIci=5F44C9OI=3D@protonmail.com>
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='G3lZk93u7szffMisrbflaH1XWV441PPGyEZ91FVnByxuY8YqZJtj8QgMDBk3Caz5QrPHaIfjceeHDH7QWvr-DO5B10h-MK6GrQfN7nqr5fA=@protonmail.com' \
--to=raid5atemyhomework@protonmail.com \
--cc=carlo@zancanaro.id.au \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).