diff options
-rw-r--r-- | user/modules/eshell.nix | 28 | ||||
-rw-r--r-- | user/settings/emacs.nix | 37 |
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; } |