On 2018-08-31 12:49 GMT, Maxim Cournoyer wrote: > Hello! > > I'm reposting Janneke's recent answer here so that it can have all its > context and participants. > > Jan Nieuwenhuizen <jann...@gnu.org> writes: > >> Hi! >> >> Just subscribed to help-guix because of a request on IRC, so hoping that >> OP is subscribed here, or someone can notify them. >> >> I have an ugly hack to switch emacs to a profile or environment. It >> parses the <profile>/etc/profile script...using MANIFEST or >> `--search-paths' would be much nicer... >> >> Anyway, I'm using some named profiles, eg >> >> ~/.config/guix/mes >> >> and when starting work on mes i do >> >> M-x guix-switch-profile RET ~/.config/guix/mes RET >> >> similar for other projects I work on. >> >> A real solution would be nice... >> >> HTH, janneke >> >> --8<---------------cut here---------------start------------->8--- >> >> (defun guix-switch-profile (&optional profile) >> "reset Emacs' environment by snarfing PROFILE/etc/profile" >> >> (defun matches-in-string (regexp string) >> "return a list of matches of REGEXP in STRING." >> (let ((matches)) >> (save-match-data >> (string-match "^" "") >> (while (string-match regexp string (match-end 0)) >> (push (or (match-string 1 string) (match-string 0 string)) >> matches))) >> matches)) >> >> (interactive "fprofile: ") >> (let* ((output (shell-command-to-string (concat "GUIX_PROFILE= /bin/sh -x >> " profile "/etc/profile"))) >> (exports (matches-in-string "^[+] export \\(.*\\)" output))) >> (mapcar (lambda (line) (apply #'setenv (split-string line "="))) exports >> ))) >> --8<---------------cut here---------------end--------------->8--- > > Thank you, Janneke! > > An alternative if you'd like to also define some variables (say, > PYTHONPATH to add a couple of sources libraries while working on a > Python project) would be to use `direnv'[0] and `emacs-direnv'. > > Christopher Baines detailed the solution in this thread: > https://lists.gnu.org/archive/html/guix-devel/2017-05/msg00475.html. > > I hope this helps! > > Maxim
Thank you for posting this, I still haven't had a chance to play around with this yet, but I think this is the kind of solution that is exactly what I'm looking for. However, Named profiles was sorta where I was leaning. I may not use the `emacs-direnv` part. But I if I understand correctly, switching profiles will change the `${HOME}/.guix-profile` symlink, I can just statically add the current profile to any path variables and go from there(?). Again, thank you and apologies for the necrobump because of late replies... -Kenny