配置仓库结构
按硬件层 / 系统层 / 用户层 / 机器层分层组织,由 flake.nix 统一定义所有 machine。
nixos-config/
├── flake.nix # 入口:定义所有 machine,切换方案
├── flake.lock
├── lib/ # 纯 Nix 辅助函数(如自定义的 mkSystem, mkHome 构建器)
│ └── default.nix
├── hardware/ # ---------- 硬件层 ----------
│ ├── laptop-A.nix
│ ├── server-B.nix
│ └── pad-C.nix
├── system/ # ---------- 系统层 ----------
│ ├── kernel.nix # 内核:版本、模块、参数
│ ├── setting/ # 设置
│ │ ├── nix.nix # nix.settings、GC、flakes
│ │ ├── locale.nix # 时区、locale、键盘布局
│ │ ├── users.nix # 用户组、系统用户
│ │ └── state.nix # system.stateVersion
│ ├── desktop/ # 桌面环境
│ │ ├── kde.nix
│ │ ├── gnome.nix
│ │ └── hyprland.nix
│ ├── components/ # 系统组件
│ │ ├── network.nix # NetworkManager、DNS
│ │ ├── input-method.nix # fcitx5 / ibus
│ │ ├── audio.nix # PipeWire / PulseAudio
│ │ ├── fonts.nix # 字体、字体渲染
│ │ └── power.nix # TLP、upower、电池
│ ├── packages/ # 系统级应用
│ │ ├── docker.nix # docker
│ │ └── xxxx.nix # 其它
│ ├── services/ # 系统服务
│ │ ├── sshd.nix # SSH 服务
│ │ ├── docker.nix # Docker 引擎(不碰容器)
│ │ ├── firewall.nix # 防火墙
│ │ └── cron.nix # 定时任务
│ ├── container/ # 容器
│ │ ├── vc-mysql.nix # virtualisation.oci-containers 实例:数据库
│ │ ├── vc-foregejo.nix # virtualisation.oci-containers 实例:仓库
│ │ └── dk-nginx.nix # docker 实例:Nginx
│ └── overlays/ # 补丁
│ └── default.nix
├── home/ # ---------- 用户层 ----------
│ └── userA/
│ ├── packages/ # 安装工具
│ │ ├── browsers.nix # chrome
│ │ ├── editors.nix # vscode, notepad++
│ │ ├── terminals.nix # alacritty, kitty, wezterm
│ │ └── tools.nix # 其他工具
│ └── setting/ # 设置
│ └── shell.nix # bash/zsh/fish、别名
└── machines/ # 机器层:完整方案组装
├── laptop-A/
│ └── default.nix
├── server-B/
│ └── default.nix
└── pad-C/
└── default.nix