From 5d859b419e1e1a850cd160e05d98bda3fd9883ea Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Fri, 4 Oct 2019 16:14:13 +0200 Subject: Move Emacs to user configuration --- system/modules/user-interface.nix | 40 ------- system/packages/emacs.nix | 127 --------------------- system/satoshipad.nix | 2 +- system/trillian.nix | 13 --- .../.local/share/applications/emacsclient.desktop | 12 -- user/modules/emacs.nix | 48 +++++++- user/packages/emacs.nix | 127 +++++++++++++++++++++ 7 files changed, 174 insertions(+), 195 deletions(-) delete mode 100644 system/packages/emacs.nix delete mode 100755 user/emacs/.local/share/applications/emacsclient.desktop create mode 100644 user/packages/emacs.nix diff --git a/system/modules/user-interface.nix b/system/modules/user-interface.nix index 4a1c0053..c913bc70 100644 --- a/system/modules/user-interface.nix +++ b/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 @@ in cmus fish # for emacs-fish-completion - myEmacs - editorScript unstable.xst # st, but with support for XResources @@ -120,7 +81,6 @@ in # 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 = { diff --git a/system/packages/emacs.nix b/system/packages/emacs.nix deleted file mode 100644 index e0df78b0..00000000 --- a/system/packages/emacs.nix +++ /dev/null @@ -1,127 +0,0 @@ -{ - pkgs ? import {}, - emacs ? pkgs.emacs -}: - -let - myEmacs = pkgs.lib.overrideDerivation (emacs) (attrs: { - postInstall = attrs.postInstall + '' - rm $out/share/applications/emacs.desktop - ''; - }); - stdenv = pkgs.stdenv; - - emacsWithPackages = (pkgs.emacsPackagesNgGen myEmacs).emacsWithPackages; -in - emacsWithPackages (epkgs: (with epkgs; [ - ace-link - all-the-icons - almost-mono-themes - add-node-modules-path - ag - all-the-icons - amx - auto-async-byte-compile - avy - basic-theme - bash-completion - caddyfile-mode - company - company-web - company-tabnine - counsel - counsel-projectile - crux - docker-compose-mode - dockerfile-mode - editorconfig - eink-theme - eldoc-box - emmet-mode - esh-autosuggest - esh-buf-stack - esh-help - eshell-fringe-status - eshell-toggle - eshell-up - evil - evil-collection - evil-commentary - evil-magit - evil-mu4e - evil-org - evil-quickscope - evil-space - evil-surround - eyebrowse - feature-mode - fish-completion - flycheck - flymake-diagnostic-at-point - general - git-gutter-fringe - git-messenger - git-timemachine - gitattributes-mode - gitconfig-mode - gitignore-mode - gitlab-ci-mode - gitlab-ci-mode-flycheck - goto-chg - haskell-mode - helpful - ivy-hydra - jinja2-mode - js2-mode - json-mode - k8s-mode - # kubernetes - # kubernetes-evil - ledger-mode - lsp-mode - lsp-ui - lsp-haskell - lsp-treemacs - magit - markdown-mode - minions - monotropic-theme - moody - nginx-mode - nix-mode - nix-update - org-journal - paredit - php-mode - posframe - prettier-js - projectile - projectile-ripgrep - quickrun - relative-buffers - restclient - ripgrep - rjsx-mode - scss-mode - spacemacs-theme - swiper - toml-mode - typescript-mode - undo-tree - use-package - web-mode - wgrep-ag - ws-butler - which-key - yaml-mode - ] ++ (if stdenv.isDarwin then [ - exec-path-from-shell - ns-auto-titlebar - ] else [ - ])) ++ (with epkgs.elpaPackages; [ - rainbow-mode - ]) ++ (if !stdenv.isDarwin then [ - # From main packages set - - pkgs.unstable.mu - ] else [])) diff --git a/system/satoshipad.nix b/system/satoshipad.nix index 86123e1e..d473eb33 100644 --- a/system/satoshipad.nix +++ b/system/satoshipad.nix @@ -54,7 +54,7 @@ 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)"; }; }; diff --git a/system/trillian.nix b/system/trillian.nix index 1f4ce67e..8c1f0deb 100644 --- a/system/trillian.nix +++ b/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 @@ in environment.systemPackages = with pkgs; [ mosh - emacsPackage aspell aspellDicts.en darwin-zsh-completions @@ -75,13 +69,6 @@ in }; }; - # 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 }')))"; diff --git a/user/emacs/.local/share/applications/emacsclient.desktop b/user/emacs/.local/share/applications/emacsclient.desktop deleted file mode 100755 index 7cf42241..00000000 --- a/user/emacs/.local/share/applications/emacsclient.desktop +++ /dev/null @@ -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; 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 {} else import {}; + 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; } diff --git a/user/packages/emacs.nix b/user/packages/emacs.nix new file mode 100644 index 00000000..3644f520 --- /dev/null +++ b/user/packages/emacs.nix @@ -0,0 +1,127 @@ +{ + pkgs ? import {}, + emacs ? pkgs.emacs +}: + +let + myEmacs = pkgs.lib.overrideDerivation (emacs) (attrs: { + postInstall = attrs.postInstall + '' + rm $out/share/applications/emacs.desktop + ''; + }); + stdenv = pkgs.stdenv; + + emacsWithPackages = (pkgs.emacsPackagesNgGen myEmacs).emacsWithPackages; +in + emacsWithPackages (epkgs: (with epkgs; [ + ace-link + all-the-icons + almost-mono-themes + add-node-modules-path + ag + all-the-icons + amx + auto-async-byte-compile + avy + basic-theme + bash-completion + caddyfile-mode + company + company-web + company-tabnine + counsel + counsel-projectile + crux + docker-compose-mode + dockerfile-mode + editorconfig + eink-theme + eldoc-box + emmet-mode + esh-autosuggest + esh-buf-stack + esh-help + eshell-fringe-status + eshell-toggle + eshell-up + evil + evil-collection + evil-commentary + evil-magit + evil-mu4e + evil-org + evil-quickscope + evil-space + evil-surround + eyebrowse + feature-mode + fish-completion + flycheck + flymake-diagnostic-at-point + general + git-gutter-fringe + git-messenger + git-timemachine + gitattributes-mode + gitconfig-mode + gitignore-mode + gitlab-ci-mode + gitlab-ci-mode-flycheck + goto-chg + haskell-mode + helpful + ivy-hydra + jinja2-mode + js2-mode + json-mode + k8s-mode + # kubernetes + # kubernetes-evil + ledger-mode + lsp-mode + lsp-ui + lsp-haskell + lsp-treemacs + magit + markdown-mode + minions + monotropic-theme + moody + nginx-mode + nix-mode + nix-update + org-journal + paredit + php-mode + posframe + prettier-js + projectile + projectile-ripgrep + quickrun + relative-buffers + restclient + ripgrep + rjsx-mode + scss-mode + spacemacs-theme + swiper + toml-mode + typescript-mode + undo-tree + use-package + web-mode + wgrep-ag + ws-butler + which-key + yaml-mode + ] ++ (if stdenv.isDarwin then [ + exec-path-from-shell + ns-auto-titlebar + ] else [ + ])) ++ (with epkgs.elpaPackages; [ + rainbow-mode + ]) ++ (if !stdenv.isDarwin then [ + # From main packages set + + pkgs.mu + ] else [])) -- cgit 1.4.1