about summary refs log tree commit diff
path: root/machines
diff options
context:
space:
mode:
authorPatryk Niedźwiedziński <pniedzwiedzinski19@gmail.com>2020-12-14 08:59:26 +0100
committerPatryk Niedźwiedziński <pniedzwiedzinski19@gmail.com>2020-12-14 08:59:26 +0100
commit2c628011e1a4389948491e0ed8903e03bdf45c31 (patch)
treece049e4cc22d7279b0013d8953df1af40ed05e93 /machines
parentfb94b8f1860ba09d892ce7a85e6b90ac103ab410 (diff)
downloaddots-2c628011e1a4389948491e0ed8903e03bdf45c31.tar.gz
dots-2c628011e1a4389948491e0ed8903e03bdf45c31.zip
Add zsh config
Diffstat (limited to 'machines')
-rwxr-xr-xmachines/base.nix96
1 files changed, 95 insertions, 1 deletions
diff --git a/machines/base.nix b/machines/base.nix
index e56c663..0d204b3 100755
--- a/machines/base.nix
+++ b/machines/base.nix
@@ -1,11 +1,12 @@
 ## Base setup, absolute minimum
 
-{ pkgs, ... }:
+{ pkgs, config, ... }:
 {
 
   imports = [
     ../modules/nur.nix
     ../users/pn.nix
+    ../modules/internet.nix
   ];
 
   boot.cleanTmpDir = true;
@@ -18,6 +19,14 @@
 
   console.font = "${pkgs.terminus_font}/share/consolefonts/ter-v22n";
 
+  environment.shellAliases = {
+    gs = "git status";
+    gc = "git commit";
+    ga = "git add";
+    gl = "git log";
+    gd = "git diff";
+  };
+
   ## === XDG ===
   environment.variables = {
     XDG_CONFIG_HOME = "$HOME/.config";
@@ -52,6 +61,91 @@
     histFile = "$XDG_DATA_HOME/zsh/history";
 
     syntaxHighlighting.enable = true;
+
+    promptInit = ''
+      autoload -U colors && colors
+      PS1="%B%{$fg[red]%}[%{$fg[yellow]%}%n%{$fg[green]%}@%{$fg[blue]%}%M %{$fg[magenta]%}%~%{$fg[red]%}]%{$reset_color%}$%b "
+    '';
+
+    interactiveShellInit = ''
+      setopt autocd		# Automatically cd into typed directory.
+      stty stop undef		# Disable ctrl-s to freeze terminal.
+      setopt interactive_comments
+
+      # History in cache directory:
+      HISTSIZE=10000000
+      SAVEHIST=10000000
+
+      # Load aliases and shortcuts if existent.
+      [ -f "''\${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc" ] && source "''\${XDG_CONFIG_HOME:-$HOME/.config}/shell/shortcutrc"
+      [ -f "''\${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc" ] && source "''\${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliasrc"
+      [ -f "''\${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc" ] && source "''\${XDG_CONFIG_HOME:-$HOME/.config}/shell/zshnameddirrc"
+
+      # Basic auto/tab complete:
+      autoload -U compinit
+      zstyle ':completion:*' menu select
+      zmodload zsh/complist
+      compinit
+      _comp_options+=(globdots)		# Include hidden files.
+
+      # vi mode
+      bindkey -v
+      export KEYTIMEOUT=1
+
+      # Use vim keys in tab complete menu:
+      bindkey -M menuselect 'h' vi-backward-char
+      bindkey -M menuselect 'k' vi-up-line-or-history
+      bindkey -M menuselect 'l' vi-forward-char
+      bindkey -M menuselect 'j' vi-down-line-or-history
+      bindkey '^R' history-incremental-search-backward
+      bindkey -v '^?' backward-delete-char
+
+      # Change cursor shape for different vi modes.
+      function zle-keymap-select {
+        if [[ ''\${KEYMAP} == vicmd ]] ||
+           [[ $1 = 'block' ]]; then
+          echo -ne '\e[1 q'
+        elif [[ ''\${KEYMAP} == main ]] ||
+             [[ ''\${KEYMAP} == viins ]] ||
+             [[ ''\${KEYMAP} = "" ]] ||
+             [[ $1 = 'beam' ]]; then
+          echo -ne '\e[5 q'
+        fi
+      }
+      zle -N zle-keymap-select
+      zle-line-init() {
+          zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
+          echo -ne "\e[5 q"
+      }
+      zle -N zle-line-init
+      echo -ne '\e[5 q' # Use beam shape cursor on startup.
+      preexec() { echo -ne '\e[5 q' ;} # Use beam shape cursor for each new prompt.
+
+      # Use lf to switch directories and bind it to ctrl-o
+      lfcd () {
+          tmp="$(mktemp)"
+          lf -last-dir-path="$tmp" "$@"
+          if [ -f "$tmp" ]; then
+              dir="$(cat "$tmp")"
+              rm -f "$tmp" >/dev/null
+              [ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
+          fi
+      }
+      bindkey -s '^o' 'lfcd\n'
+
+      bindkey -s '^a' 'bc -lq\n'
+
+      bindkey -s '^f' 'cd "$(dirname "$(fzf)")"\n'
+
+      bindkey '^[[P' delete-char
+
+      # Edit line in vim with ctrl-e:
+      autoload edit-command-line; zle -N edit-command-line
+      bindkey '^e' edit-command-line
+    '';
+
+
+
   };
 
 }