about summary refs log tree commit diff stats
path: root/modules/home.legacy/conf/zsh/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/home.legacy/conf/zsh/default.nix')
-rw-r--r--modules/home.legacy/conf/zsh/default.nix103
1 files changed, 103 insertions, 0 deletions
diff --git a/modules/home.legacy/conf/zsh/default.nix b/modules/home.legacy/conf/zsh/default.nix
new file mode 100644
index 00000000..f5c65081
--- /dev/null
+++ b/modules/home.legacy/conf/zsh/default.nix
@@ -0,0 +1,103 @@
+{
+  config,
+  pkgs,
+  lib,
+  shell_library,
+  system,
+  ...
+}: {
+  # TODO: ADD THIS ADDON
+  # next one only works if your alias is only a command, e.g. if you `alias='cat some_file.txt &2> /dev/null'`, running `cat some_file.txt` won't trigger it.
+  # TODO: find something better for this use case
+  # zsh-you-should-use # ZSH plugin that reminds you to use existing aliases for commands you just typed
+  home.sessionPath = [];
+  programs.zsh = {
+    enable = true;
+    autosuggestion.enable = true;
+    enableCompletion = true;
+    syntaxHighlighting.enable = true;
+
+    autocd = true;
+
+    dotDir = ".config/zsh";
+
+    history = {
+      extended = true;
+      ignoreDups = false;
+      expireDuplicatesFirst = false;
+      ignoreSpace = false; # TODO: I might change that
+
+      path = "${config.xdg.dataHome}/zsh/history";
+      save = 9000000; # number of lines to save
+      size = 9000000; # number of lines to keep
+      share = false; # share between sessions
+    };
+    historySubstringSearch = {
+      enable = true;
+      searchDownKey = "^[[B"; # DOWN Arrow key
+      searchUpKey = "^[[A"; # UP Arrow key
+    };
+
+    loginExtra =
+      ""
+      + lib.concatStringsSep "\nsetopt " [
+        "setopt AUTO_CD" # This is needed as first item
+        "AUTO_PUSHD"
+        "CHASE_DOTS"
+
+        "ALWAYS_TO_END"
+
+        "EXTENDED_HISTORY"
+        "HIST_ALLOW_CLOBBER"
+        "HIST_VERIFY"
+        "HIST_FCNTL_LOCK"
+        "APPEND_HISTORY"
+
+        "DVORAK"
+        "CORRECT"
+
+        "PROMPT_SUBST"
+        "TRANSIENT_RPROMPT" # maybe?
+
+        "COMBINING_CHARS"
+        "VI"
+      ];
+
+    initExtraFirst =
+      builtins.readFile ./config/zsh-init.zsh
+      + ''
+        SHELL_LIBRARY_VERSION="2.1.2" source ${shell_library.rawLib.${system}}
+        # This next line buffers the first line of the following item:
+
+      ''
+      # NOTE: This must be before the insult, as we otherwise override the previous handler <2024-02-28>
+      + builtins.readFile ./config/command_not_found.sh
+      + builtins.readFile ./config/command_not_found_insult.sh
+      + builtins.readFile ./config/custom_cursor.zsh
+      + builtins.readFile "${pkgs.fzf}/share/fzf/key-bindings.zsh";
+
+    shellAliases = {
+      ll = ". ll";
+      lm = ". lm";
+
+      hisea = "history 0 | grep";
+    };
+    sessionVariables = {
+      IVIEWER = "imv";
+      READER = "zathura";
+
+      LIBVIRT_DEFAULT_URI = "qemu:///system";
+
+      BEMENU_SCALE = "1.5";
+      BEMENU_BACKEND = "wayland";
+      BEMENU_OPTS = "--fn 'Source Code Pro 10' -c -l 30 -B 1 -W 0.9 --hf #ffffff";
+
+      # Export Wayland env Vars {{{
+      QT_QPA_PLATFORM = "wayland";
+      QT_QPA_PLATFORMTHEME = "qt5ct"; # needs qt5ct
+      CLUTTER_BACKEND = "wayland";
+      SDL_VIDEODRIVER = "wayland"; # might brake some things
+      # }}}
+    };
+  };
+}