Add an option to set EDITOR to emacsclient

authored by Rodney Lorrimar and committed by Damien Cassou c70b6b82 958ae22c

+23 -2
+23 -2
nixos/modules/services/editors/emacs.nix
··· 6 6 7 7 cfg = config.services.emacs; 8 8 9 + editorScript = pkgs.writeScriptBin "emacseditor" '' 10 + #!${pkgs.stdenv.shell} 11 + if [ -z "$1" ]; then 12 + exec ${cfg.package}/bin/emacsclient --create-frame --alternate-editor ${cfg.package}/bin/emacs 13 + else 14 + exec ${cfg.package}/bin/emacsclient --alternate-editor ${cfg.package}/bin/emacs "$@" 15 + fi 16 + ''; 17 + 9 18 in { 10 19 11 20 options.services.emacs = { ··· 45 54 ''; 46 55 }; 47 56 57 + defaultEditor = mkOption { 58 + type = types.bool; 59 + default = false; 60 + example = true; 61 + description = '' 62 + When enabled, configures emacsclient to be the default editor 63 + using the EDITOR environment variable. 64 + ''; 65 + }; 48 66 }; 49 67 50 68 config = mkIf (cfg.enable || cfg.install) { ··· 59 77 }; 60 78 } // optionalAttrs cfg.enable { wantedBy = [ "default.target" ]; }; 61 79 62 - environment.systemPackages = [ cfg.package ]; 80 + environment.systemPackages = [ cfg.package editorScript ]; 81 + 82 + environment.variables = if cfg.defaultEditor then { 83 + EDITOR = mkOverride 900 "${editorScript}/bin/emacseditor"; 84 + } else {}; 63 85 }; 64 - 65 86 }