chore: clean up and optimize nixos configuration

- fix: nvidia.nix missing semicolon (build error)
- remove: ranger, vim from core/pkg.nix (yazi + neovim covers)
- remove: htop duplicate in home/pkg.nix (keep in system)
- replace: neofetch with fastfetch in home/pkg.nix
- remove: nixd LSP, keep nil only in nvchad.nix
- remove: empty server/pkg.nix and no-op server/firewall.nix
- remove: redundant services.pulseaudio.enable = false default
- add: comprehensive README.md documenting architecture
This commit is contained in:
luochen570
2026-05-24 10:36:23 +08:00
parent 4488256039
commit c92c904e76
9 changed files with 102 additions and 54 deletions

120
README.md
View File

@@ -1,32 +1,104 @@
# 📦 nixos 配置仓库
# NixOS Configuration
基于 Flake 的 NixOS 多主机配置
洛尘luochen570的 NixOS 配置仓库,采用 Flakes + home-manager + sops-nix 架构
## 🌲 目录树
```text
📦 nixos
├─ 🏠 home/ # Home Manager 用户配置default.nix 聚合)
├─ 🖥️ hosts/ # 主机入口
├─ 🧩 lib/ # 公共函数mkHost
├─ 🧱 modules/ # 系统模块core/server/wsl
├─ 🎨 overlays/ # 包覆盖
├─ 📚 profiles/ # 场景组合desktop/server/wsl/virtualbox/lxc
└─ 🔐 secrets/ # sops 密钥模板与密文
## 架构
```
nixos/
├── flake.nix # Flake 入口
├─ lib/
│ ├── mkHost.nix # 主机生成函数
│ └── hosts.nix # 主机定义5 台机器)
├─ profiles/ # 角色配置组合
│ ├── desktop.nix
│ ├── server.nix
│ ├── wsl.nix
│ ├── virtualbox.nix
│ └── lxc.nix
├── modules/
│ ├── core/ # 所有机器共享的基础配置
│ │ ├── default.nix
│ │ ├── core.nix # Nix 设置、时区、语言、GC
│ │ ├── pkg.nix # 基础系统包
│ │ ├── users.nix # 用户与 Shell
│ │ └── sops.nix # 密钥管理
│ ├── server/ # 服务器模块
│ │ ├── default.nix
│ │ ├── docker.nix
│ │ └── ssh.nix
│ ├── 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 用户配置
│ ├── default.nix
│ ├── pkg.nix # 用户级包
│ ├── git.nix
│ ├── ssh.nix # SSH 密钥sops 挂载)
│ ├── zsh.nix # ZSH + Powerlevel10k
│ └── nvchad.nix # Neovim (NvChad)
├── hosts/ # 主机专属配置
│ ├── desktop/ # 桌面机AMD + NVIDIA
│ ├── server/ # 服务器
│ ├── wsl/ # WSL (NixOS-WSL)
│ ├── virtualbox/ # VirtualBox 虚拟机
│ └── nixos-lxc/ # Proxmox LXC 容器
└── secrets/ # sops-nix 加密密钥(不公开)
└── users/luochen570.enc.yaml
```
## 🔗 引用关系
`flake.nix` -> `lib/hosts.nix` + `lib/mkHost.nix` -> `hosts/*` + `profiles/*` -> `modules/*/default.nix` -> 子模块
## 主机列表
`networking.hostName``lib/mkHost.nix` 统一设置,具体值在 `lib/hosts.nix` 每台主机条目里定义。
| 主机 | 角色 | 架构 | 说明 |
|------|------|------|------|
| `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 容器 |
## 🌐 Nix 模块引入文件树
```text
flake.nix
├─ lib/hosts.nix
├─ lib/mkHost.nix
│ ├─ hosts/<hostname>/default.nix -> configuration.nix
│ ├─ profiles/<profile>.nix -> modules/*
│ └─ home/default.nix -> home/*.nix
└─ modules/core/sops.nix -> secrets/users/*.enc.yaml
## 使用
```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 才能解密

View File

@@ -8,11 +8,10 @@
programs.nvchad = {
enable = true;
# 可选:添加你需要的语言服务器和工具
# NvChad 需要的额外包
extraPackages = with pkgs; [
# LSP 服务器
nil # Nix LSP
nixd # Nix 语言服务器(另一种选择)
marksman # Markdown LSP
# 格式化工具

View File

@@ -4,7 +4,6 @@
duf
ncdu
yazi
htop
neofetch
fastfetch
];
}

View File

@@ -6,25 +6,17 @@
../../modules/drivers/nvidia.nix
../../modules/drivers/amdgpu.nix
];
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound with pipewire.
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
};
}

View File

@@ -4,8 +4,6 @@
curl
git
htop
ranger
vim
wget
];
}

View File

@@ -8,7 +8,7 @@
open = true;
nvidiaSettings = true;
powerManagement.enable = false;
powerManagement.finegrained = false
powerManagement.finegrained = false;
package = config.boot.kernelPackages.nvidiaPackages.latest;
};

View File

@@ -1,8 +1,6 @@
{ ... }:
{
imports = [
./pkg.nix
./firewall.nix
./docker.nix
./ssh.nix
];

View File

@@ -1,4 +0,0 @@
{ lib, ... }:
{
networking.firewall.enable = lib.mkDefault true;
}

View File

@@ -1,6 +0,0 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
];
}