diff options
Diffstat (limited to 'user/modules')
-rw-r--r-- | user/modules/emacs.nix | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/user/modules/emacs.nix b/user/modules/emacs.nix index 82a22b52..6860627e 100644 --- a/user/modules/emacs.nix +++ b/user/modules/emacs.nix @@ -1,9 +1,53 @@ -{ config, pkgs, ... }: +{ config, pkgs, lib, ... }: +let + pkgsUnstable = if pkgs.stdenv.isDarwin then import <nixpkgs-unstable> {} else import <nixos-unstable> {}; + emacsPackage = import ../packages/emacs.nix { + pkgs = pkgs.unstable; + emacs = pkgs.unstable.emacs; + }; + + editorScript = pkgs.writeScriptBin "edit" '' + #!${pkgs.runtimeShell} + if [ -z "$1" ]; then + exec ${emacsPackage}/bin/emacsclient --create-frame --alternate-editor ${emacsPackage}/bin/emacs + else + exec ${emacsPackage}/bin/emacsclient --alternate-editor ${emacsPackage}/bin/emacs "$@" + fi + ''; + desktopApplicationFile = pkgs.writeTextFile { + name = "emacsclient.desktop"; + destination = "/share/applications/emacsclient.desktop"; + text = '' + [Desktop Entry] + Name=Emacsclient + 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=${editorScript}/bin/edit %F + Icon=emacs + Type=Application + Terminal=false + Categories=Development;TextEditor; + StartupWMClass=Emacs + Keywords=Text;Editor; + ''; + }; +in { + home.packages = [ + emacsPackage + editorScript + ]; + nixpkgs.config.packageOverrides = { + myEmacs = emacsPackage; + }; + systemd.user.sessionVariables = { + EDITOR = lib.mkOverride 900 "${editorScript}/bin/edit"; + }; home.file.".emacs.d" = { recursive = true; source = ../emacs/.emacs.d; }; - home.file.".local/share/applications/emacsclient.desktop".source = ../emacs/.local/share/applications/emacsclient.desktop; + home.file.".local/share/applications/emacsclient.desktop".source = desktopApplicationFile; } |