From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:470:142:3::10]:34295) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j3yIV-0000BC-JS for guix-patches@gnu.org; Tue, 18 Feb 2020 03:32:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j3yIU-0006mm-GQ for guix-patches@gnu.org; Tue, 18 Feb 2020 03:32:03 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:33552) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1j3yIU-0006mc-DH for guix-patches@gnu.org; Tue, 18 Feb 2020 03:32:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1j3yIU-0006mA-9c for guix-patches@gnu.org; Tue, 18 Feb 2020 03:32:02 -0500 Subject: [bug#37868] [PATCH] guix: Allow multiple packages to provide Linux modules in the system profile. Resent-Message-ID: From: Ludovic =?UTF-8?Q?Court=C3=A8s?= References: <20191022152238.12856-1-dannym@scratchpost.org> <20191112172048.61ba69eb@scratchpost.org> <87a78zq4xb.fsf@gnu.org> <20200217181045.7d41f231@scratchpost.org> Date: Tue, 18 Feb 2020 09:31:06 +0100 In-Reply-To: <20200217181045.7d41f231@scratchpost.org> (Danny Milosavljevic's message of "Mon, 17 Feb 2020 18:10:45 +0100") Message-ID: <87lfp0nvp1.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: Danny Milosavljevic Cc: Mark H Weaver , 37868@debbugs.gnu.org Hi, Danny Milosavljevic skribis: > guix system: error: #: invalid G-expression input That means you=E2=80=99re using a procedure in a gexp, as in: #~(foo bar #$proc) where =E2=80=98proc=E2=80=99 is a procedure. Given the location info and argument name, we can tell that procedure comes from =E2=80=98profile-derivation=E2=80=99, right=E2=80=A6 > (mlet %store-monad ((kernel -> (operating-system-kernel os)) > + (kernel-module-packages -> > + (operating-system-kernel-module-packages os)) > (initrd -> (operating-system-initrd-file os)) > (params (operating-system-boot-parameters-fil= e os))) > (return `(("kernel" ,kernel) > + ("kernel-modules" > + ,(profile-derivation > + (packages->manifest (cons kernel kernel-module-packag= es)) =E2=80=A6 here. =E2=86=91 This is because =E2=80=98profile-derivation=E2=80=99 is a monadic procedure= , so it=E2=80=99s result is a =E2=80=9Cmonadic value=E2=80=9D, which is technically a procedu= re. You need to move the =E2=80=98profile-derivation=E2=80=99 call within the = =E2=80=98mlet=E2=80=99. HTH! Ludo=E2=80=99.