Hi Guixers,
I’m trying to native-compile the Emacs packages in my Guix Home
configuration. My understanding is that will happen automatically
when you specify the `emacs' package to the emacs-build-system’s
arguments (instead of the default `emacs-minimal').
I wrote a procedure which transforms any packages using
emacs-build-system to use `emacs':
(define (with-full-emacs pkg)
(if (eq? (package-build-system pkg) emacs-build-system)
(package
(inherit pkg)
(arguments
(ensure-keyword-arguments
(package-arguments pkg)
(list #:emacs emacs))))
pkg))
And a function which uses `package-mapping' to apply this to all
the packages in my home-environment:
(define (+emacs-native-comp home-env)
(let ((xform (package-mapping with-full-emacs #:deep? #t)))
(home-environment
(inherit home-env)
(packages
(map xform (home-environment-packages home-env))))))
This all seems sensible to me, but when I `guix home reconfigure',
I get:
guix home: error: profile contains conflicting entries for
emacs-s
guix home: error: first entry: [email protected]
/gnu/store/gv32m8dn3l7f3678vy2v4dy5kzk7a7q6-emacs-s-1.13.0
guix home: error: ... propagated from [email protected]
guix home: error: ... propagated from
[email protected]
guix home: error: second entry: [email protected]
/gnu/store/vgs5nsgjf2n5x8f3bfavqxq6srnmz2fk-emacs-s-1.13.0
guix home: error: ... propagated from [email protected]
The second package, the one propagated by emacs-lemon, is the
untransformed package:
$ guix build emacs-s
/gnu/store/vgs5nsgjf2n5x8f3bfavqxq6srnmz2fk-emacs-s-1.13.0
What am I missing? Does `package-mapping' not change
propagated-inputs? Does anyone have a working setup they can
share?
Thanks,
-- Ian