Subject: bug#62174: Cannot use modules with an inferior kernel.

From: Liliana Marie Prikler <[email-masked]>
Date: Tue, 14 Mar 2023 20:53:02 +0100

Am Montag, dem 13.03.2023 um 23:27 -0400 schrieb Robby Zambito:
> Hi,
> 
> I use an inferior to pin my kernel version, but it seems like I
> cannot
> use modules with it. The following works fine:
> 
> ```
> (use-package-modules linux)
> (operating-system
>   ...
>   (kernel linux-libre)
>   (kernel-loadable-modules (list v4l2loopback-linux-module))
>   ...)
> ```
> 
> As does the following:
> 
> ```
> (define rz/linux
>   (let* ((channels
>           (list (channel
>                  (name 'guix)
>                  (url "https://git.savannah.gnu.org/git/guix.git")
>                  (commit
> "c81d2d448cbd051800867fe3f4b82ef3f4380ebf"))))
>          (inferior (inferior-for-channels channels))
>          (kernel-version "6.1.15"))
>     (first (lookup-inferior-packages inferior "linux-libre" kernel-
> version))))
> 
> (operating-system
>   ...
>   (kernel rz/linux)
>   ...)
> ```
> 
> However when I combine the two (using the inferior for the kernel +
> specify modules)...
> 
> ```
> (operating-system
>   ...
>   (kernel rz/linux)
>   (kernel-loadable-modules (list v4l2loopback-linux-module))
>   ...)
> ```
> 
> I get the following error:
> 
> ```
> Backtrace:
> In guix/store.scm:
>    659:37 19 (thunk)
>    1298:8 18 (call-with-build-handler #<procedure 7ff5305d4cc0 at g…>
> …)
>   2168:25 17 (run-with-store #<store-connection 256.99 7ff526131b90>
> …)
> In guix/scripts/system.scm:
>     843:2 16 (_ _)
>     717:8 15 (_ #<store-connection 256.99 7ff526131b90>)
> In gnu/system.scm:
>   1307:19 14 (operating-system-derivation _)
> In gnu/services.scm:
>   1140:36 13 (_ _)
> In srfi/srfi-1.scm:
>    586:29 12 (map1 (#<<service> type: #<service-type profile 7ff5…>
> …))
>    586:29 11 (map1 (#<<service> type: #<service-type etc 7ff52978…>
> …))
>    586:29 10 (map1 (#<<service> type: #<service-type activate 7ff…>
> …))
>    586:29  9 (map1 (#<<service> type: #<service-type boot 7ff5297…>
> …))
>    586:17  8 (map1 (#<<service> type: #<service-type linux-builder
> …>))
> In gnu/services.scm:
>    951:29  7 (linux-builder-configuration->system-entry _)
> In guix/profiles.scm:
>     438:4  6 (packages->manifest _)
> In srfi/srfi-1.scm:
>    586:17  5 (map1 ((#<inferior-package [email-masked] 7ff52…>)
> …))
> In guix/inferior.scm:
>     549:2  4 (loop (#<inferior-package [email-masked] 7ff52610…>)
> …)
>     529:4  3 (inferior-package-input-field (#<inferior-package lin…>)
> …)
>    473:18  2 (inferior-package-field (#<inferior-package linux-lib…>)
> …)
> In ice-9/boot-9.scm:
>   1685:16  1 (raise-exception _ #:continuable? _)
>   1685:16  0 (raise-exception _ #:continuable? _)
> 
> ice-9/boot-9.scm:1685:16: In procedure raise-exception:
> In procedure struct-vtable: Wrong type argument in position 1
> (expecting struct): (#<inferior-package
> [email-masked] 7ff5261088a0>)
> ```
> 
> It seems to me like this is a bug. If I am mistaken, some guidance
> would be appreciated.
I think you should try to pin the kernel modules as well.  If that
still doesn't work as intended (it very well might), we have a proper
case of something that should work but doesn't.

Cheers