about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--desktop.nix5
-rw-r--r--emacs.nix66
2 files changed, 69 insertions, 2 deletions
diff --git a/desktop.nix b/desktop.nix
index b306cd5196cc..bb3041f1c56f 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 000000000000..ec7da68bbbfe
--- /dev/null
+++ b/emacs.nix
@@ -0,0 +1,66 @@
+# Derivation for Emacs configured with the packages that I need:
+
+{ pkgs ? import <nixpkgs> {} }:
+
+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
+  ])
+)