I'm betting that the part to optimize is: --8<---------------cut here---------------start------------->8--- ;; Make the symlinks. (union-build output inputs #:symlink symlink #:log-port (%make-void-port "w")) --8<---------------cut here---------------end--------------->8--- from the 'build-profile' procedure in (guix build profiles). > >> --8<---------------cut here---------------start------------->8--- > [...] >> building XDG MIME database... >> successfully built /gnu/store/cir84qj587i6is4akgqand7ahg9bj938-xdg-mime-database.drv >> successfully built /gnu/store/cir84qj587i6is4akgqand7ahg9bj938-xdg-mime-database.drv >> /gnu/store/j0bznlj2ibnhirijhnwpkkxzz4qfk8wb-xdg-mime-database >> >> real 1m7.344s >> user 0m1.331s >> sys 0m0.053s >> --8<---------------cut here---------------end--------------->8--- > > Well, it is all clear to me, but I do not know if we can do better > because these 2 XDG updates seem relying on the external binaries > "/bin/update-desktop-database" and "/bin/update-mime-database". I > have not timed the function 'xdg-desktop-database' but all the time > should be spent on these, I bet. :-) They do, and this is indeed what takes time. But, this doesn't stop motivated wizards from implementing our own database generator in Scheme that would do the same. Ludovic had done just that for the man-db database generator. The custom code in Guix can do it much faster that it initially could back when it was relying on man-db to do that (that's also probably the reason why we have issues such as https://issues.guix.gnu.org/38838; perhaps the generated database is slightly different -- but that's another topic :-)). Thanks, Maxim