From 0a50d682ec85bf023bebd68a3ca388001f0c0677 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Tue, 8 Oct 2019 21:44:57 +0200 Subject: mv modules settings --- user/settings/emacs.nix | 169 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 user/settings/emacs.nix (limited to 'user/settings/emacs.nix') diff --git a/user/settings/emacs.nix b/user/settings/emacs.nix new file mode 100644 index 00000000..9f542391 --- /dev/null +++ b/user/settings/emacs.nix @@ -0,0 +1,169 @@ +{ config, pkgs, lib, ... }: + +let + inherit (pkgs) stdenv; + + pkgsUnstable = if stdenv.isDarwin then import {} else import {}; + + editorScript = pkgs.writeScriptBin "edit" '' + #!${pkgs.runtimeShell} + if [ -z "$1" ]; then + exec ${config.programs.emacs.finalPackage}/bin/emacsclient --create-frame --alternate-editor ${config.programs.emacs.finalPackage}/bin/emacs + else + exec ${config.programs.emacs.finalPackage}/bin/emacsclient --alternate-editor ${config.programs.emacs.finalPackage}/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 +{ + programs.emacs = { + enable = true; + extraPackages = 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 + dired-git-info + 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 + rainbow-mode + 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 + ] ++ lib.optionals (!stdenv.isDarwin) [ + pkgs.mu + ]); + }; + home.packages = [ + editorScript + ]; + nixpkgs.overlays = [ + (self: super: { + emacsPackagesNgGen = pkgsUnstable.emacsPackagesNgGen; + emacs = pkgsUnstable.emacs; + }) + ]; + home.sessionVariables = { + EDITOR = "${editorScript}/bin/edit"; + }; + home.file.".emacs.d/init.el" = { + source = ../emacs/.emacs.d/init.el; + onChange = '' + ${config.programs.emacs.finalPackage}/bin/emacs -batch -f batch-byte-compile .emacs.d/init.el + ''; + }; + home.file.".emacs.d/eshell/" = { + recursive = true; + source = ../emacs/.emacs.d/eshell; + }; + + home.file.".local/share/applications/emacsclient.desktop".source = desktopApplicationFile; +} -- cgit 1.4.1