feat: NixOS 声明式配置(从 Arch + decman 迁移)

- flake.nix: NixOS + home-manager + nixos-wsl 三输入
- hosts/wsl + hosts/bare: WSL 与裸机共享模块,分主机配置
- modules/: base(CLI 工具) + dev(工具链+LSP) + docker + locale + shell
- home/: zsh(oh-my-zsh+插件+别名) + git(delta) + starship + 工具集成
- scripts/install.sh: 一键安装脚本(WSL/裸机通用)
- 原 bun/go 全局包 hack 改为 nixpkgs 声明式管理
This commit is contained in:
2026-04-03 19:05:06 +08:00
parent 5c851ea250
commit d58c650d59
33 changed files with 574 additions and 1058 deletions
+99 -21
View File
@@ -1,37 +1,115 @@
# Arch Linux 配置仓库
# NixOS 声明式系统配置
使用 [decman](https://github.com/kiviktnm/decman) 声明式管理 Arch Linux 系统配置。
默认面向 WSL 环境;裸机使用请按需修改 `source.py`
使用 [NixOS](https://nixos.org/) + [Home Manager](https://github.com/nix-community/home-manager) + [Flakes](https://nix.dev/concepts/flakes) 声明式管理系统配置。
## 使用
支持 **WSL** 和**裸机**两种部署方式,共享同一套模块。
### WSL 首次启动(默认 root 登录)
## 快速开始
1. 初始化普通用户:
### WSL
```bash
curl -fsSL https://git.furtherverse.com/imbytecat/archlinux-config/raw/branch/main/scripts/wsl-init.sh | bash -s -- <用户名>
```
2. 在 PowerShell 中设置默认用户并重启:
1. 安装 [NixOS-WSL](https://github.com/nix-community/NixOS-WSL/releases)
```powershell
wsl --manage archlinux --set-default-user <用户名>
wsl --terminate archlinux
wsl --import NixOS C:\wsl\nixos nixos-wsl.tar.gz
wsl -d NixOS
```
3. 重新进入 WSL,以普通用户执行
2. 运行安装脚本
```bash
curl -fsSL https://git.furtherverse.com/imbytecat/archlinux-config/raw/branch/main/scripts/install.sh | bash
bash <(curl -fsSL https://git.furtherverse.com/imbytecat/archlinux-config/raw/branch/nixos/scripts/install.sh)
```
### 非 WSL 环境
直接执行第 3 步。
## 更新配置
3. 重新登录,配置 Git 身份:
```bash
cd ~/.config/archlinux-config && git pull && sudo decman
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
```
### 裸机
1. 安装 NixOS 基础系统
2. 运行安装脚本(传入 `bare` 参数):
```bash
bash <(curl -fsSL https://git.furtherverse.com/imbytecat/archlinux-config/raw/branch/nixos/scripts/install.sh) bare
```
3. 生成硬件配置并重新应用:
```bash
cd ~/.config/nixos-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 # 入口:输入源 + 输出配置
├── hosts/
│ ├── wsl/default.nix # WSL:用户、WSL 设置
│ └── bare/default.nix # 裸机:引导、网络、硬件
├── modules/
│ ├── base.nix # 基础包(现代 CLI 工具)
│ ├── dev.nix # 开发工具链 + LSP
│ ├── docker.nix # Docker
│ ├── locale.nix # 区域 / 语言
│ └── shell.nix # Zsh 系统级启用
├── home/
│ ├── default.nix # Home Manager 入口
│ ├── shell.nix # Zsh + 终端增强工具
│ └── git.nix # Git + Delta
└── scripts/
└── install.sh # 一键安装脚本
```
**配置层级**`hosts/*`(主机特定) → `modules/*`(共享系统) → `home/*`(用户级)
## 日常使用
```bash
cd ~/.config/nixos-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/base.nix``modules/dev.nix`,在 `environment.systemPackages` 中添加:
```nix
environment.systemPackages = with pkgs; [
your-package # ← 添加
];
```
> 查包名:`nix search nixpkgs <关键词>`
### 添加 Shell 别名
编辑 `home/shell.nix` 中的 `shellAliases`