Hello, Hilton Chain <hako@ultrarare.space> skribis:
> Activation scripts are already ‘program-file’s, but unfortunately > (gnu build activation) and (guix build utils) are implicit dependencies. This > is hard to change at the moment. > > I have sent a patch which might partially address your issue: > > [PATCH v2 3/3] services: activation: Continue on exceptions. > https://issues.guix.gnu.org/73494#26 > > It executes activation scripts by ‘invoke’, so they won't change the > environment. Activation snippets all run in the same Guile process so far, mostly out of a concern to be more efficient than running each one in a separate process as you suggest. The downside is what Tomas found out: the load path is global to the entire set of activation snippets. Now, maybe we could have the best of both worlds: instead of ‘activation-script’ doing (for-each primitive-load '#$actions) it could do something like: (for-each (lambda (action) (guard … ;like Hilton suggests (save-module-excursion (lambda () (set-current-module (resolve-module '(guile-user))) (primitive-load action))))) '#$actions) Thoughts? Ludo’.