summary refs log tree commit diff stats
path: root/user
diff options
context:
space:
mode:
Diffstat (limited to 'user')
-rw-r--r--user/modules/eshell.nix28
-rw-r--r--user/settings/emacs.nix37
2 files changed, 61 insertions, 4 deletions
diff --git a/user/modules/eshell.nix b/user/modules/eshell.nix
new file mode 100644
index 00000000..c4fc366f
--- /dev/null
+++ b/user/modules/eshell.nix
@@ -0,0 +1,28 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let cfg = config.programs.emacs;
+in {
+  options.programs.emacs.eshell = {
+    aliases = mkOption {
+      default = { };
+      type = types.attrsOf types.str;
+      example = {
+        ll = "ls -l $*";
+        ff = "find-file $1";
+      };
+      description = ''
+        An attribute set that maps aliases (the top-level attribute names
+        in this option) to command strings.
+      '';
+    };
+  };
+
+  config = mkIf cfg.enable {
+    home.file.".emacs.d/eshell/alias" = {
+      recursive = true;
+      text = concatStringsSep "\n" (mapAttrsToList (k: v: "alias ${k} ${v}") cfg.eshell.aliases);
+    };
+  };
+}
diff --git a/user/settings/emacs.nix b/user/settings/emacs.nix
index 860af993..b2b29c09 100644
--- a/user/settings/emacs.nix
+++ b/user/settings/emacs.nix
@@ -31,8 +31,40 @@ let
   };
 in
 {
+  imports = [
+    ../modules/eshell.nix
+  ];
   programs.emacs = {
     enable = true;
+    eshell = {
+      aliases = {
+        pk = "eshell-up-pk $1";
+        up = "eshell-up $1";
+
+        ec = "find-file $1";
+
+        l = "ls $*";
+        la = "ls -A $*";
+        ll = "ls -lh $*";
+        lla = "ls -lhA $*";
+
+        https = "http --default-scheme https $*";
+
+        ava = "npx ava $*";
+        bunyan = "npx bunyan $*";
+        mocha = "npx mocha $*";
+        prettier = "prettier_d --pkg-conf $*";
+        standard = "npx standard $*";
+        tsc = "npx tsc $*";
+        tslnt = "npx tslnt $*";
+        tsnode = "npx tsnode $*";
+
+        kx = "kubectx $*";
+        kns = "kubens $*";
+
+        cdg = "cd (projectile-project-root)";
+      };
+    };
     extraPackages = epkgs: (with epkgs; [
       ace-link
       all-the-icons
@@ -135,6 +167,7 @@ in
       ws-butler
       which-key
       yaml-mode
+      yasnippet
     ] ++ lib.optionals (!stdenv.isDarwin) [
       pkgs.mu
     ]);
@@ -151,10 +184,6 @@ in
       ${config.programs.emacs.finalPackage}/bin/emacs -Q -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;
 }