diff options
Diffstat (limited to '')
-rw-r--r-- | home/default.nix | 1 | ||||
-rw-r--r-- | home/zsh/completion-style.zsh | 34 | ||||
-rw-r--r-- | home/zsh/default.nix | 42 | ||||
-rw-r--r-- | home/zsh/options.zsh | 23 | ||||
-rw-r--r-- | home/zsh/prompt.zsh | 4 | ||||
-rw-r--r-- | hosts/aptos/home.nix | 2 | ||||
-rw-r--r-- | hosts/carmel/home.nix | 2 | ||||
-rw-r--r-- | hosts/tahoe/home.nix | 2 | ||||
-rw-r--r-- | modules/system/users/default.nix | 2 |
9 files changed, 108 insertions, 4 deletions
diff --git a/home/default.nix b/home/default.nix index 3cdce3c..435baed 100644 --- a/home/default.nix +++ b/home/default.nix @@ -36,5 +36,6 @@ ./wm ./xdg ./yt-dlp + ./zsh ]; } diff --git a/home/zsh/completion-style.zsh b/home/zsh/completion-style.zsh new file mode 100644 index 0000000..32bd6f4 --- /dev/null +++ b/home/zsh/completion-style.zsh @@ -0,0 +1,34 @@ +# Style the completion a bit +zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} + +# Show a prompt on selection +zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s' + +# Use arrow keys in completion list +zstyle ':completion:*' menu select + +# Group results by category +zstyle ':completion:*' group-name '' + +# Keep directories and files separated +zstyle ':completion:*' list-dirs-first true + +# Add colors to processes for kill completion +zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31' + +# match uppercase from lowercase +zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' + +# Filename suffixes to ignore during completion (except after rm command) +zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns '*?.old' + +# command for process lists, the local web server details and host completion +# on processes completion complete all user processes +zstyle ':completion:*:processes' command 'ps -au$USER' + +# Completion formatting and messages +zstyle ':completion:*' verbose yes +zstyle ':completion:*:descriptions' format '%B%d%b' +zstyle ':completion:*:messages' format '%d' +zstyle ':completion:*:warnings' format 'No matches for: %d' +zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b' diff --git a/home/zsh/default.nix b/home/zsh/default.nix new file mode 100644 index 0000000..cc19579 --- /dev/null +++ b/home/zsh/default.nix @@ -0,0 +1,42 @@ +{ config, pkgs, lib, ... }: +let cfg = config.my.home.zsh; +in { + options.my.home.zsh = with lib; { + enable = mkEnableOption "zsh configuration"; + }; + + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ zsh-completions ]; + + programs.zsh = { + enable = true; + dotDir = ".config/zsh"; + enableCompletion = true; + + history = { + size = 500000; + save = 500000; + extended = false; + ignoreSpace = true; + ignoreDups = true; + share = false; + 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; + }; + + defaultKeymap = "emacs"; + initExtra = lib.concatMapStrings builtins.readFile [ + ./completion-style.zsh + ./options.zsh + ./prompt.zsh + ]; + + }; + programs.dircolors = { enable = true; }; + }; +} diff --git a/home/zsh/options.zsh b/home/zsh/options.zsh new file mode 100644 index 0000000..84ae8da --- /dev/null +++ b/home/zsh/options.zsh @@ -0,0 +1,23 @@ +# Show an error when a globbing expansion doesn't find any match +setopt nomatch + +# List on ambiguous completion and Insert first match immediately +setopt autolist menucomplete + +# Use pushd when cd-ing around +setopt autopushd pushdminus pushdsilent + +# Use single quotes in string without the weird escape tricks +setopt rcquotes + +# Single word commands can resume an existing job +setopt autoresume + +# Append commands to history as they are exectuted +setopt inc_append_history_time + +# Remove useless whitespace from commands +setopt hist_reduce_blanks + +# Those options aren't wanted +unsetopt beep extendedglob notify diff --git a/home/zsh/prompt.zsh b/home/zsh/prompt.zsh new file mode 100644 index 0000000..1f92aa3 --- /dev/null +++ b/home/zsh/prompt.zsh @@ -0,0 +1,4 @@ +fg_green=$'%{\e[1;32m%}' +fg_no_colour=$'%{\e[0m%}' + +PROMPT="%K{cyan}%F{black}%m%k%f ${fg_green}%~${fg_no_colour} %% " diff --git a/hosts/aptos/home.nix b/hosts/aptos/home.nix index 1bfd236..b3c226f 100644 --- a/hosts/aptos/home.nix +++ b/hosts/aptos/home.nix @@ -2,7 +2,7 @@ my.home = { packages.enable = true; element.enable = true; - fish.enable = true; + zsh.enable = true; git.enable = true; go.enable = true; python.enable = true; diff --git a/hosts/carmel/home.nix b/hosts/carmel/home.nix index eaf3185..231aebd 100644 --- a/hosts/carmel/home.nix +++ b/hosts/carmel/home.nix @@ -3,7 +3,7 @@ { my.home = { packages.enable = true; - fish.enable = true; + zsh.enable = true; git.enable = true; go.enable = true; python.enable = true; diff --git a/hosts/tahoe/home.nix b/hosts/tahoe/home.nix index 7ea3830..2e56275 100644 --- a/hosts/tahoe/home.nix +++ b/hosts/tahoe/home.nix @@ -6,7 +6,7 @@ tmux.enable = true; git.enable = true; ssh.enable = true; - fish.enable = true; + zsh.enable = true; beets = { enable = true; musicDirectory = "/data/fast/music"; diff --git a/modules/system/users/default.nix b/modules/system/users/default.nix index fb8e1f1..3086f18 100644 --- a/modules/system/users/default.nix +++ b/modules/system/users/default.nix @@ -13,7 +13,7 @@ in { uid = 1000; group = "fcuny"; home = "/home/fcuny"; - shell = pkgs.fish; + shell = pkgs.zsh; extraGroups = groupsIfExist [ "docker" "users" |