前置条件
读者需要先在宿主机上安装 gnome boxes,并在其中安装 NixOS,笔者使用的是 NixOS 25.05 的 gnome 桌面, 安装后在宿主机中的 gnome boxes 上配置好共享文件夹。
启用 NixOS 相关服务
编辑 /etc/nixos/configuration.nix 在 services 片段添加如下内容:
# enable nixos as a VM
services.spice-vdagentd.enable = true;
services.spice-webdavd.enable = true;
之后在终端执行 sudo nixos-rebuild switch 使得配置生效,但是需要注意,NixOS 的该命令并不会
修改服务的运行与停止状态,所以我们还需要手动重启使得服务启动,或者手动启动。
但在重启之前,请读者先执行以下步骤,在宿主机下添加用户服务,以确保在启动机器后自动挂载。
这里可以直接按照传统的方式设置服务,但是这不太符合 NixOS 的可复现理念,笔者这里介绍两种方法。
添加挂载宿主机文件夹服务
编辑 $HOME/.config/systemd/user/gvfs-mount-shared.service
[Unit]
Description=Mount GNOME Boxes Shared Folder via gvfs
After=graphical-session.target
[Service]
ExecStart=/run/current-system/sw/bin/gio mount dav://127.0.0.1:9843/
Restart=on-failure
[Install]
WantedBy=default.target
之后在终端执行 systemctl --user enable gvfs-mount-shared.service 并重启机器,打开 nautilus
即可看到宿主机的挂载文件夹。
修改 NixOS 配置文件
我们可以直接配置 /etc/nixos/configuration.nix 添加如下内容:
{ config, pkgs, ... }:
{
systemd.user.services.gvfs-mount-shared = {
description = "Mount GNOME Boxes Shared Folder via gvfs";
after = [ "graphical-session.target" ];
wantedBy = [ "default.target" ];
serviceConfig = {
ExecStart = "${pkgs.glib}/bin/gio mount dav://127.0.0.1:9843/";
Restart = "on-failure";
};
};
}
如此即可配置 NixOS 开机将该服务作为用户服务启动。