荷兰政府正在建设名为 DAWO(Digitaal Autonome Werkomgeving Overheid)的自治数字政府办公环境,目标是用基于 NixOS 的 Linux 工作站替代 Windows 和 Office。值得关注的并不只是桌面系统换成了 Linux,而是项目把操作系统、办公套件、协作应用、云服务和运维工具放进了同一张蓝图。
这意味着 DAWO 面对的不是一次普通的软件迁移,而是一项覆盖终端、数据、身份与运维流程的系统工程。
为什么 NixOS 适合政府办公终端
传统桌面系统通常依赖安装镜像、补丁平台和人工操作来维持一致性。机器运行几年后,即使型号相同,也可能因为安装顺序、遗留软件和本地配置而出现明显差异。
NixOS 的核心思路不同:管理员用声明式配置描述系统应该处于什么状态,包括软件包、用户、服务、网络策略和桌面环境。配置可以进入版本控制,并由系统构建出对应的运行环境。
这给大规模办公终端带来几个直接价值:
- 可重复部署:新电脑、测试虚拟机和生产终端可以引用同一份配置。
- 变更可审查:安装软件或调整服务都能表现为 Git 中的一次代码变更。
- 版本可固定:依赖版本写入锁文件,降低不同批次终端产生差异的概率。
- 升级可回退:新配置出现问题时,可以切换到上一代系统配置。
- 便于分层管理:公共基线、部门策略和特定岗位软件可以拆成不同模块。
不过,声明式配置解决的是系统一致性,不会自动解决文档兼容、身份联合、数据主权或用户培训问题。
DAWO 的难点不在于安装 Linux
把 LibreOffice、浏览器和邮件客户端装进 NixOS,只能得到一台可用的 Linux 电脑。要成为政府办公环境,还需要补齐几个更大的层面。
文档与业务兼容性是最直观的门槛。历史 Office 文档可能包含复杂排版、宏、模板和专有字体。迁移团队需要先盘点文档,而不是简单地用“能否打开”作为验收标准。
协作与云服务决定了数据最终落在哪里。如果桌面改用 Linux,但文件、聊天、日历和身份系统仍完全依赖外部专有平台,自治目标就只能实现一部分。开放协议、自托管能力、数据导出机制和审计日志都应进入选型标准。
身份与终端管理同样不可缺少。政府工作站通常需要单点登录、多因素认证、磁盘加密、证书管理、设备合规检查和远程吊销能力。NixOS 可以声明本机配置,但仍需与组织的身份基础设施和安全运营平台集成。
可以这样实践:构建一个可回滚的办公桌面虚拟机
下面是一个最小实验项目,用 Nix Flake 构建带 GNOME、Firefox、LibreOffice、Nextcloud 客户端和 KeePassXC 的 NixOS 虚拟机。这里的软件选择只是演示,并不代表 DAWO 的实际组件。
运行前需要一台已经安装 Nix、启用 Flakes,并能使用 KVM/QEMU 的 Linux 主机。
创建目录:
mkdir nix-office-demo
cd nix-office-demo
新建 flake.nix:
{
description = "Reproducible government office desktop demo";
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
outputs = { self, nixpkgs }:
{
nixosConfigurations.office-demo = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [ ./configuration.nix ];
};
};
}
再创建 configuration.nix:
{ config, pkgs, modulesPath, ... }:
{
imports = [
"${modulesPath}/virtualisation/qemu-vm.nix"
];
networking.hostName = "office-demo";
networking.networkmanager.enable = true;
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
users.users.demo = {
isNormalUser = true;
initialPassword = "demo";
extraGroups = [ "networkmanager" "wheel" ];
};
environment.systemPackages = with pkgs; [
firefox
libreoffice
nextcloud-client
keepassxc
];
system.stateVersion = "24.11";
}
构建并启动虚拟机:
nix flake lock
nix build .#nixosConfigurations.office-demo.config.system.build.vm
./result/bin/run-office-demo-vm
第一次执行 nix flake lock 会生成 flake.lock。应把它和两个 Nix 文件一起提交到 Git:
git init
git add flake.nix flake.lock configuration.nix
git commit -m "Create reproducible office desktop baseline"
后续如果要增加软件,可以修改 environment.systemPackages,通过合并请求完成审查,再构建测试虚拟机。生产环境还必须删除演示密码,并加入全盘加密、集中身份认证、安全启动、日志采集和软件许可检查。
从样机走向政府级工作环境
更稳妥的迁移方式不是一次性替换所有电脑,而是建立分层基线:
- 定义最小终端基线:桌面、浏览器、办公软件、加密、证书和日志策略。
- 建立文档兼容测试集:收集真实模板、电子表格、演示文稿和宏,持续做回归测试。
- 按岗位划分配置:普通行政人员、开发人员、数据分析人员和受限终端不必使用同一套软件。
- 先验证数据链路:确认文件、聊天、邮件、日历与身份数据的存储位置、备份方式和导出能力。
- 演练升级与回滚:不仅测试系统能否升级,还要测量故障发现、停止发布和恢复旧版本所需的时间。
- 保留受控兼容通道:短期内无法迁移的 Windows 应用,可以通过隔离虚拟机或远程应用交付,而不是阻塞整个计划。
DAWO 最有价值的信号,是政府数字自治开始从采购某个替代产品,转向维护一套可以描述、审计和重建的完整工作环境。NixOS 为终端一致性提供了坚实工具,但项目是否成功,最终仍取决于文档兼容、开放协议、数据治理、身份安全和长期运维能力能否同步落地。