diff --git a/oni/home/config/rincewind.scm b/oni/home/config/rincewind.scm index d095fb1..6643360 100644 --- a/oni/home/config/rincewind.scm +++ b/oni/home/config/rincewind.scm @@ -40,6 +40,9 @@ #:select (channel make-channel-introduction openpgp-fingerprint)) + #:use-module ((guix gexp) + #:select (local-file + mixed-text-file)) #:use-module ((guix packages) #:select (package-name)) #:use-module ((guix transformations) @@ -107,7 +110,8 @@ emacs-oni-common-lisp emacs-oni-gui emacs-oni-magit - emacs-oni-notmuch)) + emacs-oni-notmuch + emacs-oni-hy)) #:use-module ((oni packages hlwm-run-or-raise) #:select (hlwm-run-or-raise)) #:use-module ((oni packages inbox-size) @@ -215,6 +219,7 @@ emacs-oni-gui emacs-oni-magit emacs-oni-notmuch + emacs-oni-hy gforth recutils emacs-rec-mode @@ -280,7 +285,17 @@ (service home-emacs-service-type (home-emacs-configuration - (package emacs-next))) + (package emacs-next) + (configurations + (list + (local-file "../services/emacs/init.el") + (mixed-text-file + "init.el" + "(with-eval-after-load 'hy-mode (require 'oni-hy))\n" + "(setq custom-file \"~/.config/emacs/custom.el\")\n" + "(load custom-file)\n" + "(provide 'init)\n" + ";;; init.el ends here\n"))))) (service home-flameshot-service-type) diff --git a/oni/home/services/emacs.scm b/oni/home/services/emacs.scm index 6f9ec3e..137da8a 100644 --- a/oni/home/services/emacs.scm +++ b/oni/home/services/emacs.scm @@ -1,7 +1,9 @@ (define-module (oni home services emacs) #:use-module ((gnu services configuration) #:select (serialize-package - define-configuration)) + define-configuration + text-config? + serialize-text-config)) #:use-module ((gnu packages emacs) #:select (emacs)) #:use-module ((gnu home services) @@ -15,7 +17,8 @@ #:use-module ((guix gexp) #:select (gexp file-append - local-file)) + local-file + mixed-text-file)) #:use-module ((guix packages) #:select (package?)) @@ -25,7 +28,10 @@ (define-configuration home-emacs-configuration (package (package emacs) - "Package to use for setting Emacs")) + "Package to use for setting Emacs") + (configurations + (text-config '()) + "A list of other configuration files to autoload")) (define (add-emacs-packages config) (list (home-emacs-configuration-package config))) @@ -44,7 +50,10 @@ (stop #~(make-kill-destructor))))) (define (home-emacs-config-files config) - `((".emacs.d/init.el" ,(local-file "emacs/init.el")))) + `((".emacs.d/init.el" + ,(mixed-text-file + "init.el" + (serialize-text-config config (home-emacs-configuration-configurations config)))))) (define home-emacs-service-type (service-type diff --git a/oni/home/services/emacs/init.el b/oni/home/services/emacs/init.el index 87fb81c..b628c81 100644 --- a/oni/home/services/emacs/init.el +++ b/oni/home/services/emacs/init.el @@ -50,8 +50,3 @@ (with-eval-after-load 'electric (add-hook 'electric-quote-inhibit-functions #'oni-in-word-p)) -(setq custom-file "~/.config/emacs/custom.el") -(load custom-file) - -(provide 'init) -;;; init.el ends here diff --git a/oni/packages/emacs-config.scm b/oni/packages/emacs-config.scm index deb83ff..68c7384 100644 --- a/oni/packages/emacs-config.scm +++ b/oni/packages/emacs-config.scm @@ -13,7 +13,7 @@ #:use-module (oni packages go)) (define-public emacs-oni-config - (let ((commit "e38bb344e4196aa2a1488e9611d1ccecdeb5acd6") + (let ((commit "23ff70c4ef428bf554b4448c860e9b61c2db84f4") (revision "0")) (package (name "emacs-oni-config") @@ -26,7 +26,7 @@ (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "15c7iyx8hisb07dpk6wi1dh8alirz0v7srca986a427b2h6002f1")))) + (base32 "04i2xham1zwip85zrx76f1mvkaicnkfyw1bp98wx999igg1vlivx")))) (build-system emacs-build-system) (home-page "https://code.ryuslash.org/ryuslash/emacs-config") (synopsis "My Emacs configuration") @@ -601,3 +601,17 @@ Emacs"))) emacs-ol-notmuch)) (synopsis "My notmuch configuration for Emacs.") (description "This package provides my configuration for notmuch."))) + +(define-public emacs-oni-hy + (package + (inherit emacs-oni-config) + (name "emacs-oni-hy") + (arguments + '(#:include '("oni-hy\\.el$"))) + (propagated-inputs + (list emacs-hy-mode + emacs-oni-paredit + emacs-oni-yasnippet + emacs-rainbow-delimiters)) + (synopsis "My Hy configuration") + (description "This package provides my configuration for Hy.")))