Hi all, Sorry to tell this - I don't think something like this would be even possible to implement :/ AFAIK package definition fields like `(inputs)` don't just describe how the package gets installed. They affect the actual build. So if we really wanted this feature, we'd need to build 2 separate variants of a package - one for Guix system and one for foreign distros. In addition to looking like an overkill, such separate build variants could also require changes to existing utilities like `guix copy`. Besides all this, It it not that easy to determine whether Guix is running under a foreign distro. One idea would be to check whether the currently-running init system is Shepherd. But what if the user is running Guix commands inside a Guix system chroot? The Shepherd process is not going to be visible in such case Wojtek -- (sig_start) website: https://koszko.org/koszko.html PGP: https://koszko.org/key.gpg fingerprint: E972 7060 E3C5 637C 8A4F 4B42 4BC5 221C 5A79 FD1A Meet Kraków saints! #18: blessed Józef Kowalski Poznaj świętych krakowskich! #18: błogosławiony Józef Kowalski https://pl.wikipedia.org/wiki/Józef_Kowalski_(duchowny) -- (sig_end) On Wed, 23 Nov 2022 18:36:49 +0800 Zhu Zihao wrote: > If you want to left the choice to user. You can just don't patch it. Or > you can always patch it because user can still use package transformer > to specify a custom ffmpeg. > > > jgart writes: > > > Does Guix have a declarative Guix API way of knowing if it is installing > > a package into foreign distro versus Guix System? > > > > I'm thinking of a function like `foreign-distro?`: > > > > ``` > > (define-public peek > > (package > > (name "peek") > > ... > > (inputs > > `(,@(if (foreign-distro?) `(("ffmpeg" ,ffmpeg)) '()))) > > ``` > > > > The above includes ffmpeg in the inputs only if installing peek on a > > foreign distro. It could additionally patch the ffmpeg executable in > > a peek package phases if foreign-distro? returns #t. > > > > WDYT > >