refactor: 重构为三设备架构,zsh 迁移至 fish

- 新增 darwinConfigurations: mac-mini, macbook-air (aarch64-darwin)
- WSL 统一用户名为 imbytecat,主机名改为 awesome-* 系列
- zsh 全面迁移至 fish (abbrs, 内置补全/高亮, zoxide --cmd cd)
- 激活 nix-darwin 模块: Homebrew, 系统偏好, Touch ID sudo
- 移除 bare/standalone 配置及 catppuccin nixosModule from mkDarwin
This commit is contained in:
2026-04-10 21:48:19 +08:00
parent 25d9ca3756
commit 68184abd8f
14 changed files with 196 additions and 251 deletions
+69 -100
View File
@@ -1,12 +1,37 @@
# NixOS 声明式系统配置
# Nix Config
使用 [NixOS](https://nixos.org/) + [Home Manager](https://github.com/nix-community/home-manager) + [Flakes](https://nix.dev/concepts/flakes) 声明式管理系统配置。
使用 [nix-darwin](https://github.com/nix-darwin/nix-darwin) + [NixOS-WSL](https://github.com/nix-community/NixOS-WSL) + [Home Manager](https://github.com/nix-community/home-manager) + [Flakes](https://nix.dev/concepts/flakes) 声明式管理三台设备的系统配置。
支持 **WSL** 和**裸机**两种部署方式,共享同一套模块。
## 设备
| 设备 | 平台 | Flake 目标 | 主机名 |
|------|------|-----------|--------|
| Mac Mini | aarch64-darwin | `mac-mini` | awesome-mac-mini |
| MacBook Air | aarch64-darwin | `macbook-air` | awesome-macbook-air |
| Windows PC (WSL) | x86_64-linux | `wsl` | awesome-wsl |
## 快速开始
### WSL
### macOS (Mac Mini / MacBook Air)
1. 安装 Nix
```bash
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh
```
2. 克隆仓库并构建:
```bash
git clone <repo-url> ~/.config/nix-config
cd ~/.config/nix-config
# Mac Mini:
darwin-rebuild switch --flake .#mac-mini
# MacBook Air:
darwin-rebuild switch --flake .#macbook-air
```
### WSL (Windows PC)
1. 安装 [NixOS-WSL](https://github.com/nix-community/NixOS-WSL/releases)
@@ -15,137 +40,81 @@ wsl --import NixOS C:\wsl\nixos nixos-wsl.tar.gz
wsl -d NixOS
```
2. 运行安装脚本
```bash
bash <(curl -fsSL https://git.furtherverse.com/imbytecat/nix-config/raw/branch/main/scripts/install.sh)
```
3. 重新登录,配置 Git 身份:
```bash
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
```
### 裸机
1. 安装 NixOS 基础系统
2. 运行安装脚本(传入 `bare` 参数):
```bash
bash <(curl -fsSL https://git.furtherverse.com/imbytecat/nix-config/raw/branch/main/scripts/install.sh) bare
```
3. 生成硬件配置并重新应用:
2. 克隆仓库并构建
```bash
git clone <repo-url> ~/.config/nix-config
cd ~/.config/nix-config
sudo nixos-generate-config --show-hardware-config > hosts/bare/hardware-configuration.nix
# 取消 hosts/bare/default.nix 中 imports 的注释
sudo nixos-rebuild switch --flake .#bare
sudo nixos-rebuild switch --flake .#wsl
```
## 仓库结构
```
├── flake.nix # 入口:输入源 + 输出配置
├── flake.lock # 依赖锁定文件(需手动生成)
├── flake.lock # 依赖锁定文件
├── hosts/
│ ├── wsl/default.nix # WSL:用户、WSL 设
── bare/default.nix # 裸机:引导、网络、硬件
│ ├── mac-mini/default.nix # Mac Mini 特定配
── macbook-air/default.nix# MacBook Air 特定配置
│ └── wsl/default.nix # WSL 特定配置
├── modules/
│ ├── nixos/ # NixOS 专用模块
│ ├── darwin/default.nix # macOS 模块(Homebrew、系统偏好等)
│ ├── nixos/ # NixOS 模块
│ │ ├── base.nix # 基础包
│ │ ├── docker.nix # Docker 配置
│ │ ├── locale.nix # 区域 / 语言
│ │ └── default.nix # 入口
── darwin/ # macOS 专用模块(预留
│ └── shared/ # 共享模块
│ ├── nix.nix # Nix 设置
│ └── default.nix # 入口
│ │ └── default.nix # 入口(用户、shell
── shared/ # 共享模块(Nix 设置
├── home/ # Home Manager 配置
│ ├── default.nix # 入口
│ ├── default.nix # 入口 + 用户级包
│ ├── theme.nix # Catppuccin 主题
│ ├── dev/ # 开发工具
│ │ ├── neovim.nix
│ │ ├── languages.nix # 语言运行时、LSP
│ │ ── git.nix
│ │ └── default.nix
│ │ ── git.nix
│ └── shell/ # Shell 配置
│ ├── zsh.nix
│ ├── fish.nix # Fish shell
│ ├── tmux.nix
│ ├── starship.nix
── tools.nix # fzf, atuin, zoxide 等
│ └── default.nix
├── lib/ # 辅助函数
│ └── default.nix
│ ├── starship.nix # Prompt
── tools.nix # fzf, atuin, zoxide 等
├── lib/default.nix # 构建辅助函数
├── overlays/ # 自定义包覆盖
│ └── default.nix
├── pkgs/ # 自定义包(预留)
│ └── default.nix
└── scripts/
└── install.sh # 一键安装脚本
└── pkgs/ # 自定义包
```
**配置层级**`hosts/*`(主机特定) → `modules/*`共享系统`home/*`(用户级)
## 首次设置(重要)
### 生成 flake.lock
首次克隆仓库后,必须生成锁定文件以确保依赖版本一致:
```bash
cd ~/.config/nix-config
nix flake lock
git add flake.lock
git commit -m "Add flake.lock"
```
**为什么需要?** `flake.lock` 锁定所有输入(nixpkgs、home-manager 等)的确切版本,确保不同机器构建结果一致。
**配置层级**`hosts/*`(主机特定) → `modules/*`平台模块`home/*`(用户级,跨平台共享
## 日常使用
```bash
cd ~/.config/nix-config
# 重建(abbreviation 自动选择 darwin-rebuild 或 nixos-rebuild
rebuild
# 更新配置
git pull && sudo nixos-rebuild switch --flake .#wsl
# 更新所有依赖
update
# 更新所有包版本
nix flake update && sudo nixos-rebuild switch --flake .#wsl
# 回滚到上一版本
# 回滚(NixOS
sudo nixos-rebuild switch --rollback
# 清理旧 generation(释放磁盘)
sudo nix-collect-garbage -d
# 清理旧 generation
sudo nix-collect-garbage -d # NixOS
nix-collect-garbage -d # macOS
```
## 自定义
## Shell
### 修改用户名
使用 **Fish** 作为默认 shell,搭配:
编辑 `hosts/wsl/default.nix`(或 `hosts/bare/default.nix`)顶部:
- **Starship** — 跨平台 prompt
- **Atuin** — shell 历史搜索
- **Zoxide** — 智能 cd`cd` = zoxide, `cdi` = 交互选择)
- **FZF** — 模糊搜索(Ctrl-R 历史, Ctrl-T 文件, Alt-C 目录)
- **Direnv** — 自动加载项目环境
- **Catppuccin Mocha** — 统一主题
```nix
let
username = "";
```
### 自定义
### 添加包
编辑 `modules/nixos/base.nix` `home/dev/languages.nix`,在对应 `packages` 列表中添加:
```nix
environment.systemPackages = with pkgs; [
your-package # ← 添加
];
```
> 查包名:`nix search nixpkgs <关键词>` 或查看 [NixOS 包搜索](https://search.nixos.org/packages)
### 添加 Shell 别名
编辑 `home/shell/zsh.nix` 中的 `shellAliases`
- 添加 fish abbreviation: 编辑 `home/shell/fish.nix` 中的 `shellAbbrs`
- 添加包: 编辑 `home/default.nix``home/dev/languages.nix`
- 添加 Homebrew cask: 编辑 `modules/darwin/default.nix` 中的 `homebrew.casks`
- 查包名: `nix search nixpkgs <关键词>` 或 [search.nixos.org](https://search.nixos.org/packages)