aboutsummaryrefslogtreecommitdiff
path: root/tests/modules/services/emacs (follow)
Commit message (Collapse)AuthorAgeFilesLines
* emacs: fix service environmentTad Fisher2020-06-246-6/+21
| | | | | | | | | | | | Emacs populates 'exec-path' at launch from the 'PATH' environment variable. Likewise, the emacs derivation from nixpkgs populates 'load-path' from the 'NIX_PROFILES' variable. As neither of these are available by default in the systemd user manager, revert to the previous behavior of launching the Emacs daemon from a login shell. Fixes #1354 Fixes #1340 PR #1355
* emacs: Support socket activation via systemdTad Fisher2020-06-1110-0/+175
Add 'services.emacs.socketActivation.enable' for generating an 'emacs.socket' systemd unit. Emacs since version 26 has supported socket activation, whereby an external process manager such as systemd listens on a socket and passes it to the Emacs daemon when the manager launches it. This improves startup time of the user session and avoids launching the daemon when not needed, for example when launching the user session via SSH. This implementation hard-codes the socket path to the default for the version of 'programs.emacs.finalPackage', because systemd does not perform shell expansion in the socket unit's 'ListenStream' parameter and it seems like an advanced use-case to change the socket path. Shell expansion would be desirable as the socket path usually resides in directories such as $XDG_RUNTIME_DIR or $TMPDIR. Tests were added to verify behavior in the following cases: - Emacs service with socket activation disabled - Emacs 26 with socket activation enabled - Emacs 27 with socket activation enabled PR #1314