[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Erlang + Emacs profile

From: zimoun
Subject: Re: Erlang + Emacs profile
Date: Mon, 29 Jun 2020 22:49:45 +0200


On Mon, 29 Jun 2020 at 21:37, Zelphir Kaltstahl <> 
>> On Thu, 25 Jun 2020 at 21:25, Zelphir Kaltstahl <> 
>> wrote:
>>> * It requires keeping multiple Emacs on my system. How will they
>>> interact with the same ~/.emacs.d/.init.el?
>> Emacs reads init.el when it starts so yes all Emacs will interact with
>> this file if you do not specify explicitly to not do it.  Well, if you
>> use 'with-eval-after-load' in your Emacs configuration files, it should
>> not be a problem. Otherwise give a look at "emacs-guix" or try "emacs -q
>> -l /path/to/your/specific/config.el", as Maxim pointed.
> OK, so basically the way would then be to have 2 Emacs, but always start
> one of them with with the `-l <path>` argument, so that it makes use of
> another config file.

I am not sure to understand what you want.  Could you describe what is
your desired workflow to hack Erlang?

> OK nice! I'll try it for a package! I noticed, that there are only 3
> Emacs Org-Babel packages available (or visible)
> at: I'l try with some of
> those

First, in case you do not know this web interface for searching

Second, I am not following closely Org Babel extensions but what
languages appear to you missing?

> Also the edit thing `guix edit emacs-ob-erlang` sounds interesting.

It depends if you use Guix System or Guix as package manager solely.
For the latter, the 'edit' is read-only.

> I just did the edit thing and I am not sure how to then "upload" a
> package. But I will read the docs a little and will probably all clear
> up.

What do you mean by "upload"?
If you mean contribute, you might be interested by this section of the

> So if I understand this correctly, there are different channels for
> different types of packages, for example for Rust packages we have
> `gnu/packages/crates-io.scm` and for Emacs packages we have
> `gnu/packages/emacs-xyz.scm`.

Channel is not the right term, in Guix parlance.  To be clear, channel
means a collection of packages living in files.  The previous different
types of packages are all in the same channel, i.e., the default

For channels examples, you can give a look at:

> The command `guix describe -f channels` does not work for me:
> ~~~~
> xiaolong@xlx200:~$ guix describe -f channels
> guix describe: error: failed to determine origin
> hint: Perhaps this `guix' command was not obtained with `guix pull'? Its 
> version string is
> 36da62f1b9c78a2729658143a7df1845cd532afa.
> ~~~~

How did you install Guix?  Have you run "guix pull" before trying "guix

> I did another `guix pull` and `guix package -u` and this is after a
> fresh Guix package manager install and and installing the following
> packages:
> ~~~~
> xiaolong@xlx200:~$ sudo -i guix package -I

Note that once you have configured your system (if you use Guix System),
you can run "guix pull" as a regular user and install package as regular
user, independently of what your system-wide is.

> The other command to show the count of packages also does not work for me:
> ~~~~
> xiaolong@xlx200:/$ sudo du -sh gnu/packages/*.scm | sort -nr | head -n5
> du: cannot access 'gnu/packages/*.scm': No such file or directory
> ~~~~

You need to be in the Guix repo, i.e., you need to git clone and the subfolder
gnu/packages/ contains all the packages stored by thematic. 

> Do I need to create channels, like a custom way of structuring packages
> for myself, before running these commands?

To test and install your own packages, you have 3 choices:

 1. ./pre-inst-env
 2. local channel
 3. --load-path

The point #1 means you use the Contribution section, build Guix from
source, then add your package to the file gnu/packages/emacs-xyz.scm (of
the Git clone) and then run (from the Git cloned repo):

  ./pre-inst-env guix install emacs-foo

The point #2 means you use a local Git repo containing your definitions
of packages.  You have the channels.scm file:

--8<---------------cut here---------------start------------->8---
  (name 'my-stuff)
  (url "file:////path/to/my/stuff.git")
  (branch "master"))
--8<---------------cut here---------------end--------------->8---

then "guix pull -C path/to/channels.scm" and you should be able to
install your package emacs-foo with "guix install emacs-foo".  Note that
the Git repo can be also https:// or other protocols.

The point #3 mean you use a local folder containing your definitions as
for point #2.  Then you simply run:

   guix install -L path/to/your/folder/containing/stuff emacs-foo

Hope that helps,

reply via email to

[Prev in Thread] Current Thread [Next in Thread]