From c70b6b8263e469f9236b972b815bcbce4d2cc349 Mon Sep 17 00:00:00 2001 From: Rodney Lorrimar Date: Tue, 21 Jun 2016 10:26:07 +0200 Subject: [PATCH] Add an option to set EDITOR to emacsclient --- nixos/modules/services/editors/emacs.nix | 25 ++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/nixos/modules/services/editors/emacs.nix b/nixos/modules/services/editors/emacs.nix index 5b65dff03c31..43b4219c51dd 100644 --- a/nixos/modules/services/editors/emacs.nix +++ b/nixos/modules/services/editors/emacs.nix @@ -6,6 +6,15 @@ let cfg = config.services.emacs; + editorScript = pkgs.writeScriptBin "emacseditor" '' + #!${pkgs.stdenv.shell} + if [ -z "$1" ]; then + exec ${cfg.package}/bin/emacsclient --create-frame --alternate-editor ${cfg.package}/bin/emacs + else + exec ${cfg.package}/bin/emacsclient --alternate-editor ${cfg.package}/bin/emacs "$@" + fi + ''; + in { options.services.emacs = { @@ -45,6 +54,15 @@ in { ''; }; + defaultEditor = mkOption { + type = types.bool; + default = false; + example = true; + description = '' + When enabled, configures emacsclient to be the default editor + using the EDITOR environment variable. + ''; + }; }; config = mkIf (cfg.enable || cfg.install) { @@ -59,7 +77,10 @@ in { }; } // optionalAttrs cfg.enable { wantedBy = [ "default.target" ]; }; - environment.systemPackages = [ cfg.package ]; - }; + environment.systemPackages = [ cfg.package editorScript ]; + environment.variables = if cfg.defaultEditor then { + EDITOR = mkOverride 900 "${editorScript}/bin/emacseditor"; + } else {}; + }; }