dotfiles/nix/modules/home-manager/features/cli/zsh.nix

86 lines
1.8 KiB
Nix
Raw Normal View History

2024-04-16 12:00:00 +00:00
{ pkgs, ... }:
2023-11-06 23:48:09 +00:00
{
programs.zsh = {
enable = true;
enableCompletion = true;
2024-12-28 23:24:05 +00:00
syntaxHighlighting.enable = true;
2023-11-06 23:48:09 +00:00
zsh-abbr = {
enable = true;
abbreviations = import ./zsh/abbreviations.nix;
};
2024-08-28 12:00:09 +00:00
cdpath = [ "~/Code" ];
2024-12-23 18:05:40 +00:00
dotDir = ".config/zsh";
2024-08-28 12:00:09 +00:00
shellAliases = (import ./zsh/aliases.nix);
2024-04-16 12:00:00 +00:00
localVariables = {
ABBR_SET_EXPANSION_CURSOR = 1;
};
initExtra = ''
# suffix
alias -s gz="tar -tf"
alias -s {html,HTML}="background firefox"
alias -s {jpg,JPG,png,PNG}="background okular"
alias -s {pdf,PDF}="background okular"
alias -s {zip,ZIP}="unzip -l"
git() {
case "$1" in
clone)
shift
local repo_url="$1"
local repo_path="''${2:-}"
if [ -n "$TARGET_DIR" ]; then
command git clone "$repo_url" "$repo_path"
else
command git clone "$repo_url"
repo_path=$(basename "$repo_url" .git)
fi
${pkgs.tmux-sessionizer}/bin/tmux-sessionizer "$repo_path"
;;
root)
shift
local ROOT="$(${pkgs.git}/bin/git rev-parse --show-toplevel 2> /dev/null || echo -n .)"
if [[ $# == 0 ]]; then
cd "''${ROOT}"
else
(cd "''${ROOT}" && eval "''${@}")
fi
;;
*)
${pkgs.git}/bin/git "''${@}"
;;
esac
}
ttyper() {
command ${pkgs.ttyper}/bin/ttyper --language english1000 --words 50 "''${@}"
}
yt-dlp() {
command yt-dlp --paths ~/Videos "$@"
}
2024-12-15 10:16:25 +00:00
bindkey -s ^f "tmux-sessionizer\n"
2024-07-23 19:46:25 +00:00
bindkey -s ^v "nvim\n"
2023-11-06 23:48:09 +00:00
setopt auto_cd
setopt auto_pushd
setopt pushd_ignore_dups
setopt pushdminus
'';
};
}