diff --git a/desktop.nix b/desktop.nix index b306cd519..bb3041f1c 100644 --- a/desktop.nix +++ b/desktop.nix @@ -3,6 +3,7 @@ { config, lib, pkgs, ... }: let wallpapers = import ./pkgs/wallpapers.nix; + emacs = import ./emacs.nix { inherit pkgs; }; in { # Configure basic X-server stuff: services.xserver = { @@ -23,8 +24,8 @@ in { services.xserver.windowManager.session = lib.singleton { name = "exwm"; start = '' - ${pkgs.emacs}/bin/emacs --daemon -f exwm-enable - emacsclient -c + ${emacs}/bin/emacs --daemon -f exwm-enable + ${emacs}/bin/emacsclient -c ''; }; diff --git a/emacs.nix b/emacs.nix new file mode 100644 index 000000000..ec7da68bb --- /dev/null +++ b/emacs.nix @@ -0,0 +1,66 @@ +# Derivation for Emacs configured with the packages that I need: + +{ pkgs ? import {} }: + +let emacsWithPackages = with pkgs; (emacsPackagesNgGen emacs).emacsWithPackages; + +# Custom code for packages missing from the current Nix packages. + +in emacsWithPackages(epkgs: + # Actual ELPA packages (the enlightened!) + (with epkgs.elpaPackages; [ + ace-window + adjust-parens + avy + company + exwm + pinentry + rainbow-mode + undo-tree + which-key + ]) ++ + + # Stable packages: + (with epkgs.melpaStablePackages; [ + browse-kill-ring + cargo + dash + dash-functional + dockerfile-mode + erlang + flycheck + go-mode + gruber-darker-theme + haskell-mode + helm + ht + idle-highlight-mode + magit + markdown-mode-plus + multi-term + multiple-cursors + nix-mode + paredit + password-store + racer + rainbow-delimiters + rust-mode + s + sly + sly-company + smart-mode-line + string-edit + terraform-mode + yaml-mode + ]) ++ + + # Bleeding-edge packages: + (with epkgs.melpaPackages; [ + helm-pass + pg + racket-mode + restclient + sly-quicklisp + uuidgen + ]) +)