summary refs log tree commit diff
diff options
context:
space:
mode:
authorRodney Lorrimar <dev@rodney.id.au>2016-06-21 10:26:07 +0200
committerDamien Cassou <damien@cassou.me>2016-07-01 11:37:56 +0200
commitc70b6b8263e469f9236b972b815bcbce4d2cc349 (patch)
tree7df6684a53755988811731be9d708d36c5cc30a0
parent958ae22cc3d4dcf6c9ef008ec2c582b4fe9fa083 (diff)
downloadnixpkgs-c70b6b8263e469f9236b972b815bcbce4d2cc349.tar
nixpkgs-c70b6b8263e469f9236b972b815bcbce4d2cc349.tar.gz
nixpkgs-c70b6b8263e469f9236b972b815bcbce4d2cc349.tar.bz2
nixpkgs-c70b6b8263e469f9236b972b815bcbce4d2cc349.tar.lz
nixpkgs-c70b6b8263e469f9236b972b815bcbce4d2cc349.tar.xz
nixpkgs-c70b6b8263e469f9236b972b815bcbce4d2cc349.tar.zst
nixpkgs-c70b6b8263e469f9236b972b815bcbce4d2cc349.zip
Add an option to set EDITOR to emacsclient
-rw-r--r--nixos/modules/services/editors/emacs.nix25
1 files changed, 23 insertions, 2 deletions
diff --git a/nixos/modules/services/editors/emacs.nix b/nixos/modules/services/editors/emacs.nix
index 5b65dff03c3..43b4219c51d 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 {};
+  };
 }