Files
nix-config/home/shell/zsh.nix
T
imbytecat e92c7aee31 refactor: 重构为多平台多用户架构,全面提升终端体验
- 新增 lib/ 辅助函数(mkNixos/mkDarwin/mkHome),消除硬编码
- 拆分 modules/ 为 nixos/darwin/shared 三层,支持跨平台共享
- 重构 home/ 为 shell/dev/theme 子模块,工具全部迁入用户级
- 深度配置 Tmux/FZF/Atuin/Bat/Eza/Btop/Lazygit/Starship
- 添加 Catppuccin Mocha 统一主题、Nerd Fonts 声明式管理
- 新增 homeConfigurations 输出,支持非 NixOS 系统直装
- 新增 nix-darwin 输入,预留 macOS 扩展路径
- 新增 overlays/ 和 pkgs/ 自定义包基础设施
- 修正 nix-darwin URL(LnL7 → nix-darwin org)
2026-04-03 19:54:17 +08:00

73 lines
1.7 KiB
Nix

{ pkgs, ... }:
{
programs.zsh = {
enable = true;
autocd = true;
oh-my-zsh = {
enable = true;
plugins = [
"git" # git aliases (gst, gco, gp...)
"sudo" # double ESC → prepend sudo
"extract" # x file.tar.gz → auto extract
"direnv" # direnv hook
];
};
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
shellAliases = {
# Navigation
cd = "z";
cdi = "zi";
".." = "cd ..";
"..." = "cd ../..";
# File listing (eza)
ls = "eza --icons --group-directories-first";
ll = "eza -la --icons --git --group-directories-first";
la = "eza -a --icons --group-directories-first";
lt = "eza --tree --level=2 --icons";
# Tools
cat = "bat --paging=never";
rm = "trash-put";
lg = "lazygit";
vi = "nvim";
# Network
http = "xh";
# Nix shortcuts
rebuild = "sudo nixos-rebuild switch --flake ~/.config/nix-config";
update = "nix flake update --flake ~/.config/nix-config";
};
initExtra = ''
# Shell options
setopt INTERACTIVE_COMMENTS
setopt NO_BEEP
# PATH (manual go/bun global tools)
export PATH="$HOME/go/bin:$HOME/.bun/bin:$PATH"
# fzf-tab plugin
source ${pkgs.zsh-fzf-tab}/share/fzf-tab/fzf-tab.plugin.zsh
# mise
eval "$(mise activate zsh)"
# WSL clipboard
if [[ -n "$WSL_DISTRO_NAME" ]]; then
alias pbcopy="clip.exe"
alias pbpaste="powershell.exe -noprofile -c Get-Clipboard"
fi
# User-local overrides
[[ -f ~/.zshrc.local ]] && source ~/.zshrc.local
'';
};
}