- Move virtualbox-guest.nix and vscode-server.nix from modules/server/ to modules/optional/ - Create modules/optional/README.md with usage docs - Update profiles/virtualbox.nix and profiles/wsl.nix import paths - Update modules/server/README.md to reflect removal - Update root README.md directory tree with optional/ entry
114 lines
4.6 KiB
Markdown
114 lines
4.6 KiB
Markdown
# NixOS Configuration
|
||
|
||
洛尘(luochen570)的 NixOS 配置仓库,采用 Flakes + home-manager + sops-nix 架构。
|
||
|
||
## 架构
|
||
|
||
```
|
||
nixos/
|
||
├── flake.nix # Flake 入口
|
||
├── lib/
|
||
│ ├── mkHost.nix # 主机生成函数
|
||
│ └── hosts.nix # 主机定义
|
||
├── profiles/ # 角色配置组合
|
||
│ ├── README.md
|
||
│ ├── desktop.nix # 桌面机
|
||
│ ├── server.nix # 服务器
|
||
│ ├── wsl.nix # WSL (Debian/Windows)
|
||
│ ├── virtualbox.nix # VirtualBox 虚拟机
|
||
│ └── lxc.nix # Proxmox LXC 容器
|
||
├── modules/ # 模块化配置
|
||
│ ├── core/ # 所有机器共享的基础配置
|
||
│ │ ├── default.nix
|
||
│ │ ├── core.nix # Nix 设置、时区、语言、GC
|
||
│ │ ├── pkg.nix # 基础系统包
|
||
│ │ ├── users.nix # 用户与 Shell
|
||
│ │ └── sops.nix # 密钥管理
|
||
│ ├── server/ # 服务器模块(默认启用)
|
||
│ │ ├── default.nix
|
||
│ │ ├── docker.nix
|
||
│ │ └── ssh.nix
|
||
│ ├── optional/ # 选装模块(按需引用)
|
||
│ │ ├── README.md
|
||
│ │ ├── virtualbox-guest.nix # VirtualBox Guest 增强
|
||
│ │ └── vscode-server.nix # VS Code Server
|
||
│ ├── desktop/ # 桌面模块
|
||
│ │ ├── default.nix
|
||
│ │ ├── pkg.nix # 桌面应用包
|
||
│ │ ├── apps.nix # MIME 与默认应用
|
||
│ │ ├── fcitx5.nix # 中文输入法
|
||
│ │ └── de/
|
||
│ │ ├── default.nix
|
||
│ │ └── kde.nix # KDE Plasma 6 + SDDM
|
||
│ └── drivers/
|
||
│ ├── nvidia.nix # NVIDIA 独显
|
||
│ └── amdgpu.nix # AMD 核显(RDNA2)
|
||
├── home/ # home-manager 用户配置
|
||
│ ├── README.md
|
||
│ ├── default.nix
|
||
│ ├── pkg.nix # 用户级包
|
||
│ ├── git.nix
|
||
│ ├── ssh.nix # SSH 密钥(sops 挂载)
|
||
│ ├── zsh.nix # ZSH + Powerlevel10k
|
||
│ └── nvchad.nix # Neovim (NvChad)
|
||
├── hosts/ # 主机专属配置
|
||
│ ├── README.md
|
||
│ ├── desktop/ # 桌面机(AMD + NVIDIA)
|
||
│ ├── server/ # 服务器
|
||
│ ├── wsl/ # WSL (NixOS-WSL)
|
||
│ ├── virtualbox/ # VirtualBox 虚拟机
|
||
│ └── nixos-lxc/ # Proxmox LXC 容器 (s0.sermc.net)
|
||
└── secrets/ # sops-nix 加密密钥(不公开)
|
||
└── users/luochen570.enc.yaml
|
||
```
|
||
|
||
## 主机列表
|
||
|
||
| 主机 | 角色 | 架构 | 说明 |
|
||
|------|------|------|------|
|
||
| `desktop` | desktop | x86_64-linux | 桌面机,NVIDIA + AMD 双显卡 |
|
||
| `server` | server | x86_64-linux | 服务器 |
|
||
| `nixos-wsl` | wsl | x86_64-linux | WSL |
|
||
| `virtualbox` | virtualbox | x86_64-linux | VirtualBox 虚拟机 |
|
||
| `nixos-lxc` | lxc | x86_64-linux | Proxmox LXC 容器 (s0.sermc.net) |
|
||
|
||
## 使用
|
||
|
||
```bash
|
||
# 构建/切换
|
||
sudo nixos-rebuild switch --flake .#desktop
|
||
|
||
# 仅构建不切换
|
||
sudo nixos-rebuild build --flake .#server
|
||
|
||
# 更新 flake lock
|
||
nix flake update
|
||
|
||
# 垃圾回收
|
||
sudo nix-collect-garbage --delete-older-than 14d
|
||
```
|
||
|
||
## 关键特性
|
||
|
||
- **Flakes** — 可复现的 NixOS 配置
|
||
- **home-manager** — 用户级包与配置管理
|
||
- **sops-nix** — 加密存储 SSH 密钥、密码哈希等敏感信息
|
||
- **NixOS-WSL** — WSL 集成
|
||
- **KDE Plasma 6** — 桌面环境(SDDM 显示管理器)
|
||
- **fcitx5 + Rime** — 中文输入法
|
||
- **Docker** — 容器运行时,自动每周清理
|
||
- **PipeWire** — 音频系统
|
||
- **Nix4NvChad** — Neovim (NvChad) 配置即代码
|
||
|
||
## 镜像源
|
||
|
||
使用 TUNA(清华)和 SJTU(上交)镜像加速 Nix 包下载,适合国内网络环境。
|
||
|
||
## 注意事项
|
||
|
||
- NVIDIA 模块的 PRIME(双显卡切换)方案已注释,启用前需通过 `lspci` 确认 PCIe Bus ID
|
||
- LXC 容器使用 Proxmox LXC 模块,关闭了 systemd 挂载报错的服务
|
||
- `secrets/` 目录经过 sops 加密,需有对应 age key 才能解密
|
||
- 各主机目录下有各自的 `README.md`,含该主机的硬件信息与应用列表
|
||
- `modules/optional/` 下的模块为非默认启用,按需在 profile 中引用
|