我已经在我的虚拟盒子里安装了NixOS。 我想在我的 NixOS 中添加一个共享文件夹。 我已经在我的虚拟盒子端设置了一个名为"设备>共享文件夹->设置中的代码"的共享文件夹。 我尝试插入来宾添加图像。它说:
无法装载介质/驱动器"C:\程序" Files\Oracle\VirtualBox\VBoxGuestAdditions.iso' (VERR_PDM_MEDIA_LOCKED(。
我强制将其挂载到设备>CDRom中
ls -l /dev/cdrom
和mount -t iso9660 -o ro /dev/cdrom /cdrom
. 来宾添加的文件可以在/cdrom
中看到
virtualization.virtualbox.guest.enable = true
在/etc/nixos/configuration.nix 中(我在某处读到过,仅这一行就足以在 nixos 中安装 Guest Addition。
然后我将配置设置为:
...
fileSystems = [
{
mountPoint = "/";
label = "nixos";
}
];
...
fileSystems."/virtualboxshare" = {
fsType = "vboxsf";
device = "Code";
option = [ "rw" ];
};
nixos-rebuild switch
,它说:
错误:属性文件系统。/虚拟盒子共享"在...已定义 在。。。(文件系统 = ...
那么如何将这两个表达式组合在一起并使我的分片文件夹在 nixOS 中可见呢?
您在构成 nixos 配置或模块的 attrset 中定义了两次fileSystems
。在第一个定义中,它是一个列表,而在第二个定义中,您将fileSystems
定义为一个 attrset,方法是使用嵌套属性集速记符号。所以实际上,这个错误是由 Nix 语言而不是 NixOS 模块系统产生的。
此错误可以通过使用与/virtualboxshare
相同的表示法定义所有文件系统来解决。
为了更好地感受嵌套的attrsets,使用nix repl
可能会很有用:
$ nix repl
Welcome to Nix version 2.0. Type :? for help.
nix-repl> :p { a = {c = 2; }; a.b = 1; }
{ a = { b = 1; c = 2; }; }
(请注意,使用:p
来评估所有内容,而不仅仅是最外层的吸引力(