From 057f66639a22bd73cc26111225785473f1b81dd3 Mon Sep 17 00:00:00 2001 From: Hilton Chain Date: Sat, 11 Apr 2026 00:03:35 +0800 Subject: [PATCH] home: services: emacs: Don't import (guix config) in gexp. * modules/rosenthal/home/services/emacs.scm (home-emacs-package): Implement load-profile in home-emacs-program. --- modules/rosenthal/home/services/emacs.scm | 26 +++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/modules/rosenthal/home/services/emacs.scm b/modules/rosenthal/home/services/emacs.scm index 193ee6b..256f1f6 100644 --- a/modules/rosenthal/home/services/emacs.scm +++ b/modules/rosenthal/home/services/emacs.scm @@ -10,6 +10,7 @@ #:use-module (guix packages) #:use-module (guix profiles) #:use-module (guix records) + #:use-module (guix search-paths) ;; Guix System - services #:use-module (gnu services) #:use-module (gnu services configuration) @@ -41,19 +42,36 @@ of Emacs extensions.")) (content (manifest (cons (package->manifest-entry emacs) (manifest-entries packages)))))) + (home-emacs-search-paths + (map search-path-specification->sexp + (manifest-search-paths + (profile-content home-emacs-profile)))) (home-emacs-program (program-file "home-emacs-program" (with-imported-modules - ;; XXX: (guix profiles) imports (guix config). (source-module-closure - '((guix profiles) + '((guix search-paths) (guix build utils))) #~(begin (use-modules (ice-9 match) - (guix profiles) + (guix search-paths) (guix build utils)) (let ((profile #$home-emacs-profile)) - (load-profile profile) + ;; See also (@ (guix profiles) load-profile). + (for-each + (match-lambda + ((($ variable _ separator) . value) + (let ((current (getenv variable))) + (setenv variable + (if current + (if separator + (string-append value separator current) + value) + value))))) + (evaluate-search-paths + (map sexp->search-path-specification + '#$home-emacs-search-paths) + (list profile))) (match (command-line) ((cmd . args) (apply system*