{ config, pkgs, self, ... }: let psCfg = config.pub-solar; xdg = config.home-manager.users."${psCfg.user.name}".xdg; in { enable = true; enableAutosuggestions = true; enableCompletion = true; dotDir = ".config/zsh"; history = { ignoreDups = true; expireDuplicatesFirst = true; ignoreSpace = true; path = "$HOME/.local/share/zsh/zsh_history"; save = 10000; size = 10000; }; loginExtra = '' [ "$(tty)" = "/dev/tty1" ] && exec ${pkgs.sway-service}/bin/sway-service ''; shellAliases = { nano = "nvim"; vi = "nvim"; vim = "nvim"; mutt = "neomutt"; ls = "exa"; la = "exa --group-directories-first -lag"; fm = "vifm ."; vifm = "vifm ."; wget = "wget --hsts-file=$XDG_CACHE_HOME/wget-hsts"; irssi = "irssi --config=$XDG_CONFIG_HOME/irssi/config --home=$XDG_DATA_HOME/irssi"; drone = "DRONE_TOKEN=$(secret-tool lookup drone token) drone"; no = "manix \"\" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | fzf --preview=\"manix '{}'\" | xargs manix"; # fix nixos-option nixos-option = "nixos-option -I nixpkgs=${self}/lib/compat"; myip = "dig +short myip.opendns.com @208.67.222.222 2>&1"; }; plugins = [ { # will source ohmyzsh/plugins/z/ name = "zsh-plugins-z"; file = "plugins/z/z.sh"; src = pkgs.fetchFromGitHub { owner = "ohmyzsh"; repo = "ohmyzsh"; rev = "master"; sha256 = "sha256-NAVotL5RxpS/zKnO+ngMIjv787lqc1dj/c4blQrQcvU="; }; } { name = "zsh-powerlevel10k"; file = "powerlevel10k.zsh-theme"; src = pkgs.fetchFromGitHub { owner = "romkatv"; repo = "powerlevel10k"; rev = "master"; sha256 = "sha256-0pzkKPdzyQXTe8usaSaM1Iivi2UHQrSJrh5V2pRdiGg="; }; } { name = "zsh-fast-syntax-highlighting"; src = pkgs.fetchFromGitHub { owner = "zdharma"; repo = "fast-syntax-highlighting"; rev = "master"; sha256 = "sha256-uoLrXfq31GvfHO6GTrg7Hus8da2B4SCM1Frc+mRFbFc="; }; } { name = "zsh-nix-shell"; file = "nix-shell.plugin.zsh"; src = pkgs.fetchFromGitHub { owner = "chisui"; repo = "zsh-nix-shell"; rev = "master"; sha256 = "sha256-BjgMhILEL/qdgfno4LR64LSB8n9pC9R+gG7IQWwgyfQ="; }; } ]; initExtra = '' bindkey -v bindkey -v 'jj' vi-cmd-mode bindkey -a 'i' up-line bindkey -a 'k' down-line bindkey -a 'j' backward-char bindkey -a 'h' vi-insert bindkey '^[[H' beginning-of-line bindkey '^[[F' end-of-line bindkey '^R' history-incremental-pattern-search-backward bindkey '^ ' autosuggest-accept bindkey '^q' push-line-or-edit bindkey '^R' fzf-history-widget # ArrowUp/Down start searching history with current input autoload -U up-line-or-beginning-search autoload -U down-line-or-beginning-search zle -N up-line-or-beginning-search zle -N down-line-or-beginning-search bindkey "^[[A" up-line-or-beginning-search bindkey "^[[B" down-line-or-beginning-search bindkey "^P" up-line-or-beginning-search bindkey "^N" down-line-or-beginning-search # MAKE CTRL+S WORK IN VIM stty -ixon stty erase '^?' precmd () { DIR_NAME=$(pwd | sed "s|^$HOME|~|g") echo -e -n "\e]2;$DIR_NAME\e\\" } # If a command is not found, show me where it is source ${pkgs.nix-index}/etc/profile.d/command-not-found.sh '' + builtins.readFile ./base16.zsh + builtins.readFile ./p10k.zsh + '' source ${pkgs.fzf}/share/fzf/key-bindings.zsh source ${pkgs.fzf}/share/fzf/completion.zsh source ${pkgs.git-bug}/share/zsh/site-functions/git-bug eval "$(direnv hook zsh)" ''; }