1
0
Fork 0
mirror of https://github.com/nix-community/home-manager synced 2024-11-10 21:29:48 +01:00

emacs: Remove obsolete socket file workaround

This commit is contained in:
Rodney Lorrimar 2023-11-09 15:16:01 +08:00 committed by Mikilio
parent 5521cbc10f
commit 2e4250a532
No known key found for this signature in database
GPG key ID: 5B2F1A890CF33F3F
5 changed files with 18 additions and 4 deletions

View file

@ -12,6 +12,10 @@ let
clientWMClass =
if versionAtLeast emacsVersion "28" then "Emacsd" else "Emacs";
# Workaround for https://debbugs.gnu.org/47511
needsSocketWorkaround = versionOlder emacsVersion "28"
&& cfg.socketActivation.enable;
# Adapted from upstream emacs.desktop
clientDesktopItem = pkgs.writeTextDir "share/applications/emacsclient.desktop"
(generators.toINI { } {
@ -128,7 +132,7 @@ in {
# Avoid killing the Emacs session, which may be full of
# unsaved buffers.
X-RestartIfChanged = false;
} // optionalAttrs (cfg.socketActivation.enable) {
} // optionalAttrs needsSocketWorkaround {
# Emacs deletes its socket when shutting down, which systemd doesn't
# handle, resulting in a server without a socket.
# See https://github.com/nix-community/home-manager/issues/2018
@ -157,7 +161,7 @@ in {
SuccessExitStatus = 15;
Restart = "on-failure";
} // optionalAttrs (cfg.socketActivation.enable) {
} // optionalAttrs needsSocketWorkaround {
# Use read-only directory permissions to prevent emacs from
# deleting systemd's socket file before exiting.
ExecStartPost =

View file

@ -32,7 +32,7 @@
${
pkgs.substituteAll {
inherit (pkgs) runtimeShell coreutils;
src = ./emacs-socket-emacs.service;
src = ./emacs-socket-27-emacs.service;
}
}

View file

@ -0,0 +1,10 @@
[Service]
ExecStart=@runtimeShell@ -l -c "@emacs@/bin/emacs --fg-daemon='%t/emacs/server' '-f' 'exwm-enable'"
Restart=on-failure
SuccessExitStatus=15
Type=notify
[Unit]
Description=Emacs text editor
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/
X-RestartIfChanged=false

View file

@ -32,7 +32,7 @@
${
pkgs.substituteAll {
inherit (pkgs) runtimeShell coreutils;
src = ./emacs-socket-emacs.service;
src = ./emacs-socket-28-emacs.service;
}
}