AFAICT the root of the problems you faced is that by default "~/.guix-profile/share/emacs/site-lisp/" and "~/.guix-profile/share/emacs/site-lisp/guix.d/…" directories are added to 'load-path' before "~/.emacs.d/elpa/…" so the packages installed from elpa/melpa/… have a priority. This may lead to the problems you have with the old "dash" and "magit-svn".
I think to avoid such clashes, we may choose not to use propagated inputs for emacs packages, and to replace (require 'foo) clauses with (require 'foo "/gnu/store/…") ones instead. This is Taylan's idea: <https://gnunet.org/bot/log/guix/2015-08-10#T722221> -- Alex
