将两个nix表达式组合在“中”;在virtualbox guest NixOS中添加共享文件夹;

将两个nix表达式组合在“中”;在virtualbox guest NixOS中添加共享文件夹;,virtualbox,shared-directory,nixos,Virtualbox,Shared Directory,Nixos,我已经在我的virtualbox中安装了一个NixOS。 我想在我的NixOS中添加一个共享文件夹。 我在virtualbox端的设备->共享文件夹->设置中设置了一个名为“代码”的共享文件夹。 我尝试插入来宾添加图像。它说: 无法装入媒体/驱动器“C:\程序” Files\Oracle\VirtualBox\vboxguestaditions.iso' (VERR_PDM_MEDIA_锁定) 我强制将其装入设备->光盘 ls-l/dev/cdrom和mount-t iso9660-o ro/d

我已经在我的virtualbox中安装了一个NixOS。 我想在我的NixOS中添加一个共享文件夹。 我在virtualbox端的设备->共享文件夹->设置中设置了一个名为“代码”的共享文件夹。 我尝试插入来宾添加图像。它说:

无法装入媒体/驱动器“C:\程序” Files\Oracle\VirtualBox\vboxguestaditions.iso' (VERR_PDM_MEDIA_锁定)

我强制将其装入设备->光盘

ls-l/dev/cdrom
mount-t iso9660-o ro/dev/cdrom/cdrom
。 可以在
/cdrom

/etc/nixos/configuration.nix中的
virtualization.virtualbox.guest.enable=true

然后,我将配置设置为:

...
fileSystems = [
  {
    mountPoint = "/";
    label = "nixos";
  }
];
...

fileSystems."/virtualboxshare" = {
  fsType = "vboxsf";
  device = "Code";
  option = [ "rw" ];
};
nixos重建开关
,上面写着:

错误:属性文件系统。“/virtualboxshare”位于。。。已经定义 在(文件系统=…)


那么,如何将这两个表达式组合在一起,使我的碎片文件夹在nixOS中可见呢?

您在构成nixOS配置或模块的属性集中定义了两次文件系统。在第一个定义中,它是一个列表,而在第二个定义中,您使用嵌套的属性集速记法将
文件系统
定义为属性集。所以实际上,这个错误是由Nix语言而不是NixOS模块系统产生的

通过使用与
/virtualboxshare
相同的符号定义所有文件系统,可以解决此错误


为了更好地了解嵌套属性集,可以使用
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
来评估一切,而不仅仅是最外层的属性集)

还将
/virtualboxshare
符号中的
选项更改为
选项
,根据。我还发现(
nix repl
和其中的
c=import{}
c.config.fileSystems.“/virtualboxshare”
)至少在我的设置(virtualbox中的nix机器)中,systemd fs.automounter在
选项=[“rw,noauto,x-systemd.automount”]
设置中不再有问题。