Aloha All, Thank you for your input! It's all been very constructive. I will do my best on that patch.
On Wed, Oct 19, 2022 at 10:56 AM <[email protected]> wrote: > > October 19, 2022 4:25 PM, "Zain Jabbar" <[email protected]> wrote: > > > Aloha All, > > > > Thank you for your insightful messages. Sorry my code did not work as > > smoothly as I would have liked. I have a =home-environment= definition > > that hopefully works for you. You can put everything into one > > configuration as you described. I do that in the following source > > block. For some reason I liked the idea of separate definitions of > > each package, so that Guile and Guix Home kind of acts like a > > =use-package= declaration. Though that was needless abstraction on my > > end. > > I do not know if it is a needless abstraction. I am just bouncing ideas > around with you. :) > > > > > #+BEGIN_SRC scheme > > (use-modules (srfi srfi-1) > > (ice-9 pretty-print) > > (gnu home) > > (gnu packages) > > (gnu services) > > (gnu home services) > > (gnu services configuration) > > (guix gexp) > > (guix transformations)) > > > > (define file-likes? (list-of file-like?)) > > > > (define-configuration/no-serialization emacs-configuration > > (emacs-packages > > (file-likes (list (specification->package "emacs-next"))) "Files") > > (early-init > > (list '()) "Early-Init") > > (init > > (list '()) "Init")) > > > > (define-public emacs-configuration-service > > (service-type (name (symbol-append 'emacs-configuration)) > > (extensions > > (list (service-extension > > home-profile-service-type > > (lambda (config) (emacs-configuration-emacs-packages config))) > > (service-extension > > home-xdg-configuration-files-service-type > > (lambda (config) > > (list > > `("emacs/init.el" ,(scheme-file "init.el" > > (emacs-configuration-init config) > > #:splice? #:t)) > > `("emacs/early-init.el" ,(scheme-file "early-init.el" > > (emacs-configuration-early-init config) > > #:splice? #:t))))))) > > (default-value (emacs-configuration)) > > (description "Configures Emacs init.el"))) > > > > (define-public minimal-home-environment > > (home-environment > > (services > > (list > > (service emacs-configuration-service > > (emacs-configuration > > (emacs-packages > > (list > > (specification->package "bash") > > (specification->package "emacs-next") > > (specification->package "emacs-debbugs") > > (specification->package "emacs-evil") > > (specification->package "emacs-paredit") > > (specification->package "emacs-anzu"))) > > (init '((evil-mode 1) > > ;; Please add more config here > > ;; Begining of emacs init configuration after evil-mode 1 > > > > ;; End emacs init configuration > > )) > > (early-init '((setq warning-suppress-log-types '((comp) (comp))) > > (setq warning-suppress-types '((comp) (comp))))))))))) ; A > > serious stack of pringles here > > > > minimal-home-environment > > #+END_SRC > > > > I saved this file to =minimal-working-example.scm= and ran a container using > > =guix home -N --share=/tmp container ./minimal-working-example.scm=. > > This should spawn a shell in which you can run =emacs= (as terminal). > > Furthermore we can also run the info help command and get to the > > debbugs page. > > > > The =init= and =early-init= configuration options take in > > S-Expressions not files. Under the hood the service uses =scheme-file= > > which takes in an expression. I am open to suggestions for other file > > mechanisms, like if, for example, G-Expressions are more natural here. > > I found that I did not know how to naturally append G-Expressions > > together and that the S-Expressions can "bleed" into the config using > > backquotes. So I chose just sticking in a list of expressions for > > Emacs. Something Andrew Tropin taught me, if you are working in a > > =*.scm= file and you want to evaluate elisp, use =M-x eval-region= or > > =M-x edit-indirect-region= (with the usual stipulation that if you do > > this very often we can bind it to a key). > > I would say when you submit your service to guix-devel others will give > you some options too. I like the idea of S-expressions though. > > > > If my interpretation of 13.1 Declaring the Home Environment is > > correct, we should expect an error associated with XDG_RUNTIME_DIR as > > the necessary variables will be set via the Operating-System > > declaration. The next error I believe is emacs wanting to make a file > > where the home container does not have read or write permissions. My > > =guix home= declaration with the =share= parameter should hopefully > > help with this error. Oddly enough if we do not specify the > > installation of =bash=, Emacs says it cannot uncompress the info > > manuals because there is no =sh=. That is why I included =bash= into > > the emacs packages list. I do think a lot of these "solutions" will be > > unncessecary if users were to use =guix home reconfigure= rather than > > user the container. Though it's nice to debug them there. > > Thanks for the explanation! -- Thank you, Zain Jabbar
