As discussed in [1], this improves readability.
Not all --with options have a corresponding --without (and vice-versa),
but Emacs's configure script can endure this. Additionally, this
"encodes" the default options in system-configuration-options.
[1]: https://github.com/NixOS/nixpkgs/pull/267946#issuecomment-1815394037
The invocation of the install.sh script changed in 8.1.0 or 8.0 to no
longer accept the --prefix flag, instead the path needs to be given as
the first argument alone.
When enabled (the default), Emacs compresses its files (.c, .el, .info,
and so on) before installing them.
Disabling the option with `withCompressInstall = false` results in the
suppression of that compression step. This increases disk space, but is
slightly faster for some operations; Emacs does not have to decompress
these files on the fly when, for example, jumping to the definition of a
built-in function.
stdenv.targetPlatform really shouldn't be used by software that
doesn't generate or manipulate binaries. I reviewed all uses of
targetPlatform outside of pkgs/development/compilers and pkgs/stdenv
and replaced those which weren't involved in something which fits
these criteria.
Quoting from the Emacs 29 release notes:
> Building Emacs includes generation of a Japanese dictionary, which is
> used by Japanese input methods. Previously, the build included a step
> of reducing the size of this dictionary's vocabulary. This vocabulary
> reduction is now optional, by default off. If you need the Emacs
> build to include the vocabulary reduction, configure Emacs with the
> option '--with-small-ja-dic'.
The `osx-dictionary` emacs package tries to build a helper executable
if it is not found at runtime. This fails with `nix` installations of
the package, so we build it at build time.
This fixes cd-ing to `/sudo:localhost:` in eshell and executing
commands in that eshell via TRAMP.
Test case:
1. `M-x eshell`
2. `cd /sudo:localhost:`
3. Run any command that's not an eshell builtin
Advantages:
- info manual is built and installed
- conform to package.el
without any config, open a foo.ebuild file and its major-mode is set
to ebuild-mode.
This patch packages mu4e as an Emacs lisp package based on the mu4e
output of the multiple-output package mu, which makes mu4e a good
citizen of Emacs lisp packages in two aspects.
First, mu4e now utilizes the Emacs lisp package infrastructure in
Nixpkgs. This allows users who want to do AOT native compilation for
non-default Emacs variants[0] to build only mu4e itself instead of the
whole mu package[1].
Second, mu4e now conforms to the Emacs builtin package manager[2].
Without this patch, mu4e autoloaded commands do not work
out-of-the-box[3] because its directory is added to load-path by
site-start.el after the initialization of package-directory-list,
which causes package-activate-all to not load mu4e-autoloads.el. This
patch fixes this issue when mu4e is installed to Emacs using the
withPackages wrapper[4].
[0]: such as emacs-pgtk
[1]: mu.override { emacs = emacs-pgtk; }
[2]: package.el
[3]: either (require 'mu4e) or (require 'mu4e-autoloads) is needed to
be called before an autoloaded command is called
[4]: emacs-pgtk.pkgs.withPackages (epkgs: [ epkgs.mu4e ])
I do not think there is a good reason for it to be optional.
There were only two packages without a version attr. The version attr
is added to them in this patch.