about summary refs log tree commit diff
path: root/home/zsh.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home/zsh.nix')
-rw-r--r--home/zsh.nix45
1 files changed, 45 insertions, 0 deletions
diff --git a/home/zsh.nix b/home/zsh.nix
new file mode 100644
index 0000000..0cc20eb
--- /dev/null
+++ b/home/zsh.nix
@@ -0,0 +1,45 @@
+{ config, pkgs, lib, ... }:
+{
+  home.packages = with pkgs; [ zsh-completions ];
+
+  programs.zsh = {
+    enable = true;
+    dotDir = ".config/zsh";
+
+    defaultKeymap = "emacs";
+    enableCompletion = true;
+    enableAutosuggestions = true;
+
+    history = {
+      size = 500000;
+      save = 500000;
+      extended = true;
+      ignoreSpace = true;
+      ignoreDups = true;
+      share = true;
+      # see
+      # https://github.com/nix-community/home-manager/blob/32a7da69dc53c9eb5ad0675eb7fdc58f7fe35272/modules/programs/zsh.nix#L537
+      path = "${config.xdg.dataHome}/zsh/zsh_history";
+    };
+
+    localVariables = {
+      # Print timing statistics for everything which takes longer than
+      # 5 seconds of user + system time.
+      REPORTTIME = 5;
+    };
+
+    shellAliases = {
+      ll = "ls -l --color=auto";
+      lt = "ls -ltrh --color=auto";
+      la = "ls -ltrha --color=auto";
+      pkgsearch = "nix search nixpkgs";
+      flup = "nix flake update --commit-lock-file";
+    };
+
+    oh-my-zsh = {
+      enable = true;
+      plugins = [ "git" ];
+      theme = "robbyrussell";
+    };
+  };
+}