summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--guix/profiles.scm22
1 files changed, 21 insertions, 1 deletions
diff --git a/guix/profiles.scm b/guix/profiles.scm
index a28cf872cf..87b9543ac0 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -1206,7 +1206,15 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx."
(scandir dir (negate (cute member <> '("." "..")))))))
(filter file-exists?
(map (cute string-append <> "/share/emacs/site-lisp")
- '#$(manifest-inputs manifest))))))
+ '#$(manifest-inputs manifest)))))
+ (native-comp-needle
+ ;; Dynamically find native-site-lisp relative to profile.
+ ;; We can not hard-code the path here, because the output
+ ;; isn't known yet.
+ '(expand-file-name "../../../lib/emacs/native-site-lisp"))
+ (native-comp-dirs
+ (search-path-as-list '("lib/emacs/native-site-lisp")
+ '#$(manifest-inputs manifest))))
(mkdir-p destdir)
(with-directory-excursion destdir
(call-with-output-file "subdirs.el"
@@ -1216,6 +1224,18 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx."
(list ,@(delete-duplicates subdirs)))
port)
(newline port)
+ (write
+ `(when (boundp 'native-comp-eln-load-path)
+ (let ((needle ,native-comp-needle))
+ (setq native-comp-eln-load-path
+ (mapcan (lambda (dir)
+ (if (equal dir needle)
+ (nconc ',native-comp-dirs
+ (list dir))
+ (list dir)))
+ native-comp-eln-load-path))))
+ port)
+ (newline port)
#t)))))))
(gexp->derivation "emacs-subdirs" build
#:system system