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)
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
{ 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
|
||||
'';
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user