diff options
author | Hugo Geoffroy <pistache@lebib.org> | 2019-11-25 14:15:18 +0100 |
---|---|---|
committer | Robert Helgesson <robert@rycee.net> | 2020-05-09 22:13:04 +0200 |
commit | 9f396fddc61cb649b7989f3f51389c228bad13ff (patch) | |
tree | a8b1f678bbea61d1638cd00fbc7e28499e24ce8c /modules/services/emacs.nix | |
parent | 2434984336d5f48928e926a07d7295be52cb1091 (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.nix | 35 |
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; }; } |