diff --git a/home/jonas/doom.nix b/home/jonas/doom.nix index 266b71e..933c7c5 100644 --- a/home/jonas/doom.nix +++ b/home/jonas/doom.nix @@ -38,16 +38,12 @@ unzip zstd ]; + doom-socket-path = "${config.xdg.configHome}/doom-emacs/server.sock"; wrapped-emacs = pkgs.symlinkJoin { name = "wrapped-emacs"; paths = [pkgs.emacs29-pgtk]; nativeBuildInputs = [pkgs.makeBinaryWrapper]; postBuild = '' - mkdir -p $out/lib/systemd/system - if [ -d ${pkgs.emacs29-pgtk}/lib/systemd/system ]; then - cp -r ${pkgs.emacs29-pgtk}/lib/systemd/system/* $out/lib/systemd/system/ - fi - wrapProgram $out/bin/emacs \ --prefix PATH : ${lib.makeBinPath doom-path-pkgs} \ --add-flags "--init-directory=${config.xdg.configHome}/doom-emacs" \ @@ -59,7 +55,8 @@ --prefix PATH : ${lib.makeBinPath doom-path-pkgs} \ --set DOOMDIR "${config.home.sessionVariables.DOOMDIR}" \ --set DOOMLOCALDIR "${config.home.sessionVariables.DOOMLOCALDIR}" \ - --suffix LD_LIBRARY_PATH : "${pkgs.stdenv.cc.cc.lib}/lib" + --suffix LD_LIBRARY_PATH : "${pkgs.stdenv.cc.cc.lib}/lib" \ + --append-flags "-s ${doom-socket-path}" ''; }; doom-setup = pkgs.writeShellScript "doom-setup" '' @@ -88,6 +85,29 @@ in { }; }; + systemd.user.services.doom-emacs-server = { + Unit = { + Description = "Doom Emacs Server"; + }; + Service = { + ExecStart = "${wrapped-emacs}/bin/emacs --fg-daemon"; + Restart = "on-failure"; + SuccessExitStatus = 15; + }; + Install = { + WantedBy = ["default.target"]; # Start with your user session + }; + }; + systemd.user.sockets.doom-emacs-server = { + Socket = { + ListenStream = "${doom-socket-path}"; + DirectoryMode = "0700"; + }; + Install = { + WantedBy = ["sockets.target"]; + }; + }; + xdg = { enable = true; configFile = {