Hi! I'd like to write a package definition whose source is different depending on the system / arch it is built for. I thought of writing something like this: --8<---------------cut here---------------start------------->8--- (source (origin (method url-fetch) (uri (string-append "http://foo.bar/" version "-" (match (or (%current-target-system) (%current-system)) ("i686-linux" "x86") ("x86_64-linux" "x86_64")) ".tgz")) (sha256 (base32 (match (or (%current-target-system) (%current-system)) ("x86_64-linux" "0y4qms4lm9xiix93g45337rx5nrp0y3gb0x0avyv7l9qrkk03zz8") ("i686-linux" "0yc8n6vpqyb6qhcv5kwvr3h21ya271fi930fvd98hlkg8cg5kwyf")))))) --8<---------------cut here---------------end--------------->8--- My laptop is a x86_64-linux and the above definition always uses the x86_64 source, even with guix build --system=i686-linux foo In Nix, the following works: --8<---------------cut here---------------start------------->8--- src = if stdenv.hostPlatform.system == "x86_64-linux" then fetchurl { url = "http://foo.bar/..."; sha256 = "e8ff01e6cc38d1b3fd56a083f5860737dbd2f319a39037528fb1a74a89ae9878"; } else if stdenv.hostPlatform.system == "i686-linux" then fetchurl { url = "http://foo.bar/..."; sha256 = "cef3591e436f528852db0e8c145d3842f920e0c89bcfb219c466797cb7b18879"; } else throw "foo does not support platform ${stdenv.hostPlatform.system}"; --8<---------------cut here---------------end--------------->8--- Is this a Guix bug? -- Pierre Neidhardt https://ambrevar.xyz/