Subject: [bug#55231] [PATCH v1] initrd: Allow extra search paths with ‘initrd-extra-module-paths’

From: Ludovic Courtès <[email-masked]>
Date: Sun, 16 Feb 2025 18:40:54 +0100

Hello,

Maxim Cournoyer <[email-masked]> skribis:

> From: Morgan Arnold <[email-masked]>
>
> This commit changes the conditions under which derivations, as
> constructed by the `derivation' procedure, are made substitutable, to
> prevent potential copyright violations related to the construction of
> substitutable initrds including non-substitutable derivations (in
> particular, ZFS).
>
> This change prevents such copyright violations by only marking a derivation as
> substitutable if it is itself marked substitutable along all of its inputs.
> This means that non-substitutable derivations propagate to other derivations
> using them as input.

Hmm.

> +  (define (user+system-env-vars inputs)

[...]

> +    (let* ((substitutable-inputs? (every substitutable-derivation?
> +                                         (map derivation-input-derivation
> +                                              inputs)))

This change doesn’t come for free.  I didn’t follow the discussion, but
adding overhead to such a core component to accommodate ZFS sounds
questionable to me.

> +          ;; DRV2 is *not* available as a substitute, since it has drv1 as
> +          ;; input, and the non-substitutability is viral to avoid
> +          ;; distributing non-substitutable items that could have become
> +          ;; embedded, for example in an initrd.

Who would distribute it though?  A build farm building a ZFS-enabled
initrd, right?  Is that a real use case?  (Perhaps this has already been
answered before; please let me know what I should look at, it’s a long
discussion!)

Ludo’.