aboutsummaryrefslogtreecommitdiff
path: root/modules/services/emacs.nix
diff options
context:
space:
mode:
authorHugo Geoffroy <pistache@lebib.org>2019-11-25 14:15:18 +0100
committerRobert Helgesson <robert@rycee.net>2020-05-09 22:13:04 +0200
commit9f396fddc61cb649b7989f3f51389c228bad13ff (patch)
treea8b1f678bbea61d1638cd00fbc7e28499e24ce8c /modules/services/emacs.nix
parent2434984336d5f48928e926a07d7295be52cb1091 (diff)
emacs: add emacsclient desktop file
Add an option to enable a .desktop file for the Emacs client. PR #1223 Co-authored-by: Michael Lingelbach <m.j.lbach@gmail.com> Co-authored-by: Robert Helgesson <robert@rycee.net>
Diffstat (limited to '')
-rw-r--r--modules/services/emacs.nix35
1 files changed, 34 insertions, 1 deletions
diff --git a/modules/services/emacs.nix b/modules/services/emacs.nix
index 5b0e88db72d..c027626253d 100644
--- a/modules/services/emacs.nix
+++ b/modules/services/emacs.nix
@@ -7,9 +7,40 @@ let
cfg = config.services.emacs;
emacsCfg = config.programs.emacs;
emacsBinPath = "${emacsCfg.finalPackage}/bin";
+ # Adapted from upstream emacs.desktop
+ clientDesktopItem = pkgs.makeDesktopItem rec {
+ name = "emacsclient";
+ desktopName = "Emacs Client";
+ genericName = "Text Editor";
+ comment = "Edit text";
+ mimeType =
+ "text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;";
+ exec = "${emacsBinPath}/emacsclient ${
+ concatStringsSep " " cfg.client.arguments
+ } %F";
+ icon = "emacs";
+ type = "Application";
+ terminal = "false";
+ categories = "Utility;TextEditor;";
+ extraEntries = ''
+ StartupWMClass=Emacs
+ '';
+ };
in {
- options.services.emacs = { enable = mkEnableOption "the Emacs daemon"; };
+ options.services.emacs = {
+ enable = mkEnableOption "the Emacs daemon";
+ client = {
+ enable = mkEnableOption "generation of Emacs client desktop file";
+ arguments = mkOption {
+ type = with types; listOf str;
+ default = [ "-c" ];
+ description = ''
+ Command-line arguments to pass to <command>emacsclient</command>.
+ '';
+ };
+ };
+ };
config = mkIf cfg.enable {
assertions = [{
@@ -38,5 +69,7 @@ in {
Install = { WantedBy = [ "default.target" ]; };
};
+
+ home.packages = optional cfg.client.enable clientDesktopItem;
};
}