Files
nix-config/README.md
T
imbytecat c73e36a1be feat: add opencode, comment-checker packages; update README and flake.lock
- Add opencode and comment-checker to home packages
- Package comment-checker via prebuilt GitHub Releases binaries
- Register comment-checker overlay and flake packages output
- Add flake.lock to pin dependency versions
- Update README to match actual repo structure
- Add Node.js version notes in languages.nix
2026-04-03 20:40:00 +08:00

152 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# NixOS 声明式系统配置
使用 [NixOS](https://nixos.org/) + [Home Manager](https://github.com/nix-community/home-manager) + [Flakes](https://nix.dev/concepts/flakes) 声明式管理系统配置。
支持 **WSL** 和**裸机**两种部署方式,共享同一套模块。
## 快速开始
### WSL
1. 安装 [NixOS-WSL](https://github.com/nix-community/NixOS-WSL/releases)
```powershell
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. 生成硬件配置并重新应用:
```bash
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
```
## 仓库结构
```
├── flake.nix # 入口:输入源 + 输出配置
├── flake.lock # 依赖锁定文件(需手动生成)
├── hosts/
│ ├── wsl/default.nix # WSL:用户、WSL 设置
│ └── bare/default.nix # 裸机:引导、网络、硬件
├── modules/
│ ├── nixos/ # NixOS 专用模块
│ │ ├── base.nix # 基础包
│ │ ├── docker.nix # Docker 配置
│ │ ├── locale.nix # 区域 / 语言
│ │ └── default.nix # 入口
│ ├── darwin/ # macOS 专用模块(预留)
│ └── shared/ # 共享模块
│ ├── nix.nix # Nix 设置
│ └── default.nix # 入口
├── home/ # Home Manager 配置
│ ├── default.nix # 入口
│ ├── theme.nix # Catppuccin 主题
│ ├── dev/ # 开发工具
│ │ ├── neovim.nix
│ │ ├── languages.nix # 语言运行时、LSP
│ │ ├── git.nix
│ │ └── default.nix
│ └── shell/ # Shell 配置
│ ├── zsh.nix
│ ├── tmux.nix
│ ├── starship.nix
│ ├── tools.nix # fzf, atuin, zoxide 等
│ └── default.nix
├── lib/ # 辅助函数
│ └── default.nix
├── overlays/ # 自定义包覆盖
│ └── default.nix
├── pkgs/ # 自定义包(预留)
│ └── default.nix
└── scripts/
└── install.sh # 一键安装脚本
```
**配置层级**`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 等)的确切版本,确保不同机器构建结果一致。
## 日常使用
```bash
cd ~/.config/nix-config
# 更新配置
git pull && sudo nixos-rebuild switch --flake .#wsl
# 更新所有包版本
nix flake update && sudo nixos-rebuild switch --flake .#wsl
# 回滚到上一版本
sudo nixos-rebuild switch --rollback
# 清理旧 generation(释放磁盘)
sudo nix-collect-garbage -d
```
## 自定义
### 修改用户名
编辑 `hosts/wsl/default.nix`(或 `hosts/bare/default.nix`)顶部:
```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`