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,92 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
# ── FZF ──────────────────────────────────────────────
|
||||
programs.fzf = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
defaultCommand = "fd --type f --hidden --follow --exclude .git";
|
||||
defaultOptions = [
|
||||
"--height=40%"
|
||||
"--layout=reverse"
|
||||
"--border"
|
||||
"--info=inline"
|
||||
];
|
||||
changeDirWidgetCommand = "fd --type d --hidden --follow --exclude .git";
|
||||
fileWidgetCommand = "fd --type f --hidden --follow --exclude .git";
|
||||
fileWidgetOptions = [
|
||||
"--preview 'bat --color=always --style=numbers --line-range=:200 {} 2>/dev/null || eza -la {}'"
|
||||
];
|
||||
};
|
||||
|
||||
# ── Atuin (shell history) ────────────────────────────
|
||||
programs.atuin = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
settings = {
|
||||
enter_accept = true;
|
||||
filter_mode = "host";
|
||||
filter_mode_shell_up_key_binding = "session";
|
||||
style = "compact";
|
||||
inline_height = 20;
|
||||
show_help = false;
|
||||
};
|
||||
};
|
||||
|
||||
# ── Zoxide (smart cd) ───────────────────────────────
|
||||
programs.zoxide = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
|
||||
# ── Direnv + nix-direnv ─────────────────────────────
|
||||
programs.direnv = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
nix-direnv.enable = true;
|
||||
config.global = {
|
||||
warn_timeout = "120s";
|
||||
};
|
||||
};
|
||||
|
||||
# ── Bat (cat replacement) ───────────────────────────
|
||||
programs.bat = {
|
||||
enable = true;
|
||||
extraPackages = with pkgs.bat-extras; [
|
||||
batgrep
|
||||
batwatch
|
||||
];
|
||||
};
|
||||
|
||||
# ── Eza (ls replacement) ────────────────────────────
|
||||
programs.eza = {
|
||||
enable = true;
|
||||
enableZshIntegration = false; # we use custom aliases in zsh.nix
|
||||
git = true;
|
||||
icons = "auto";
|
||||
extraOptions = [
|
||||
"--color=always"
|
||||
"--group-directories-first"
|
||||
];
|
||||
};
|
||||
|
||||
# ── Yazi (file manager) ─────────────────────────────
|
||||
programs.yazi = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
};
|
||||
|
||||
# ── Btop (system monitor) ───────────────────────────
|
||||
programs.btop = {
|
||||
enable = true;
|
||||
settings = {
|
||||
vim_keys = true;
|
||||
};
|
||||
};
|
||||
|
||||
# ── Ripgrep / FD ────────────────────────────────────
|
||||
home.packages = with pkgs; [
|
||||
ripgrep
|
||||
fd
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user