I'm a developer for a package (ycmd) used by spacemacs, and I'd like to try using spacemacs as well. I'd like spacemacs to use the "development version" of my package, i.e. the one I'm hacking on locally. What's the best/proper way to tell spacemacs to use that version of the package rather than the one from melpa?

Right now I'm using the :load-path argument to use-package, but this seems to go against the grain a bit. Does spacemacs let me specify a load directory for specific packages in the layer configuration somewhere?

1 Answer 1


Local packages are put in extensions.el instead of packages.el. There are two lists in an extensions.el file:

  • <layer>-pre-extensions which are loaded before packages.el
  • <layer>-post-extensions which are loaded after packages.el

Local packages are put in the folder extensions within a sub-folder whose name is the name you put in one of the two lists. The load-path variable is handled automatically.

You can look at some examples in the python layer.

  • Excellent, thanks! I figured there was a canonical way, but I wasn't connecting all of the dots.
    – abingham
    Jun 15, 2015 at 12:56
  • I edited the answer to mention the load-path variable which is automatically set.
    – syl20bnr
    Jun 15, 2015 at 13:06
  • @syl20bnr do you also need to add the package to `<layer>-excluded-packages, if you're working on a package already used elsewhere?
    – mkaito
    Oct 18, 2015 at 1:49
  • 5
    extensions.el is being deprecated in favour of local packages. See github.com/syl20bnr/spacemacs/blob/develop/doc/…
    – tony day
    Nov 14, 2015 at 22:50
  • @tonyday indeed, the python layer that @syl20bnr mentions in this answer now follows those guidelines too, which had me confuddled until I saw your comment :)
    – mike
    Jan 24, 2017 at 22:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.