refactor: move max into dentritic pattern
This commit is contained in:
92
modules/common/features/development/zsh.nix
Normal file
92
modules/common/features/development/zsh.nix
Normal file
@@ -0,0 +1,92 @@
|
||||
{ ... }: {
|
||||
flake.homeModules.commonFeatureZsh = { pkgs, config, ... }: {
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
enableCompletion = true;
|
||||
autosuggestion = {
|
||||
enable = true;
|
||||
};
|
||||
syntaxHighlighting.enable = true;
|
||||
dotDir = "${config.home.homeDirectory}/.config/zsh";
|
||||
autocd = true;
|
||||
|
||||
initContent = ''
|
||||
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
|
||||
zstyle ':completion:*' menu select
|
||||
|
||||
fzf-project() {
|
||||
selected=$(find ~/dev -mindepth 2 -maxdepth 2 | sed 's|/home/max/dev/||' | fzf --delimiter '/' --nth 2)
|
||||
if [[ -n $selected ]]; then
|
||||
cd ~/dev/$selected
|
||||
zle reset-prompt
|
||||
fi
|
||||
zle redisplay
|
||||
}
|
||||
|
||||
zle -N fzf-project
|
||||
bindkey '^G' fzf-project
|
||||
|
||||
fzf-files() {
|
||||
local selected
|
||||
selected=$(${pkgs.ripgrep}/bin/rg --files | ${pkgs.fzf}/bin/fzf) || return
|
||||
|
||||
if [[ -n $selected ]]; then
|
||||
BUFFER="v $selected"
|
||||
print -s -- "$BUFFER"
|
||||
zle accept-line
|
||||
fi
|
||||
}
|
||||
|
||||
zle -N fzf-files
|
||||
bindkey '^V' fzf-files
|
||||
|
||||
open() {
|
||||
xdg-open "$@" >/dev/null 2>&1 &
|
||||
}
|
||||
'';
|
||||
|
||||
envExtra = ''
|
||||
export PER_DIRECTORY_HISTORY_TOGGLE="^H"
|
||||
export HISTORY_BASE="$HOME/.local/share/directory_history"
|
||||
'';
|
||||
|
||||
shellAliases = {
|
||||
ll = "ls -alh";
|
||||
v = "nvim";
|
||||
vi = "nvim";
|
||||
vim = "nvim";
|
||||
|
||||
p = "pnpm";
|
||||
g = "pnpm run build && ~/dev/personal/genesis/packages/genesis/dist/bin.js";
|
||||
|
||||
ns = "nix-shell --run zsh -p";
|
||||
|
||||
tt = "tt -notheme -n 10";
|
||||
|
||||
bible = "nvim ~/bible.txt -R";
|
||||
notes = "nvim ~/notes";
|
||||
home = "sudo nvim /etc/nixos/home.nix";
|
||||
wttr = "curl wttr.in/Clemson";
|
||||
|
||||
docx-to-pdf = "libreoffice --headless --convert-to pdf";
|
||||
};
|
||||
|
||||
plugins = [
|
||||
{
|
||||
name = "vi-mode";
|
||||
src = pkgs.zsh-vi-mode;
|
||||
file = "share/zsh-vi-mode/zsh-vi-mode.plugin.zsh";
|
||||
}
|
||||
{
|
||||
name = "per-directory-history";
|
||||
src = pkgs.fetchFromGitHub {
|
||||
owner = "jimhester";
|
||||
repo = "per-directory-history";
|
||||
rev = "95f06973e9f2ff0ff75f3cebd0a2ee5485e27834";
|
||||
sha256 = "sha256-EV9QPBndwAWzdOcghDXrIIgP0oagVMOTyXzoyt8tXRo=";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user