Move Emacs to user configuration
Alan Pearce alan@alanpearce.eu
Fri, 04 Oct 2019 16:14:13 +0200
6 files changed, 48 insertions(+), 69 deletions(-)
M system/modules/user-interface.nix → system/modules/user-interface.nix
@@ -1,45 +1,8 @@ { config, pkgs, lib, makeDesktopItem, ... }: -let - emacsPackage = import ../packages/emacs.nix { - pkgs = pkgs.unstable; - emacs = pkgs.unstable.emacs.override { - withGTK3 = false; - }; - }; - 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 = makeDesktopItem { - 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 { documentation.info.enable = true; nixpkgs.config.firefox.enableOfficialBranding = true; - nixpkgs.config.packageOverrides = pkgs: { - myEmacs = emacsPackage; - }; environment.systemPackages = with pkgs; [ aria2 firefox @@ -51,8 +14,6 @@ cmus fish # for emacs-fish-completion - myEmacs - editorScript unstable.xst # st, but with support for XResources @@ -120,7 +81,6 @@ environment.variables = { # This is required so that GTK applications launched from Emacs # get properly themed: GTK_DATA_PREFIX = "${config.system.path}"; - EDITOR = lib.mkOverride 900 "${editorScript}/bin/edit"; }; services.redshift = {
M system/packages/emacs.nix → user/packages/emacs.nix
@@ -123,5 +123,5 @@ rainbow-mode ]) ++ (if !stdenv.isDarwin then [ # From main packages set - pkgs.unstable.mu + pkgs.mu ] else []))
M system/satoshipad.nix → system/satoshipad.nix
@@ -54,7 +54,7 @@ path = with pkgs; [ python3Packages.keyring ]; serviceConfig = { Type = "oneshot"; ExecStart = "${pkgs.isync}/bin/mbsync -Va"; - ExecStartPost = "${pkgs.myEmacs}/bin/emacsclient -e (mu4e-update-index)"; + # ExecStartPost = "${pkgs.myEmacs}/bin/emacsclient -e (mu4e-update-index)"; }; };
M system/trillian.nix → system/trillian.nix
@@ -1,10 +1,5 @@ { config, pkgs, ... }: -let emacsPackage = import ./packages/emacs.nix { - pkgs = pkgs.unstable; - emacs = pkgs.unstable.emacs; -}; -in { imports = [ ./private/default.nix @@ -39,7 +34,6 @@ # $ nix-env -qaP | grep wget environment.systemPackages = with pkgs; [ mosh - emacsPackage aspell aspellDicts.en darwin-zsh-completions @@ -75,13 +69,6 @@ enableSSHSupport = false; }; }; - # launchd.user.agents.emacs-daemon = { - # command = "${emacsPackage}/bin/emacs --daemon"; - # serviceConfig = { - # KeepAlive = true; - # }; - # }; - # nix.gc = { automatic = true; options = "--max-freed $((25 * 1024**3 - 1024 * $(df -P -k /nix/store | tail -n 1 | awk '{ print $4 }')))";
D user/emacs/.local/share/applications/emacsclient.desktop
@@ -1,12 +0,0 @@-#!/usr/bin/env xdg-open -[Desktop Entry] -Name=Emacsclient -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=emacsclient -c %F -a "" -Icon=emacs -Type=Application -Terminal=false -Categories=Development;TextEditor; -StartupWMClass=Emacs -Keywords=Text;Editor;
M user/modules/emacs.nix → 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; }