配置仓库结构设计

配置仓库结构

按硬件层 / 系统层 / 用户层 / 机器层分层组织,由 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