如何在 NixOS 上自动挂载/永久挂载外部设备

如何在 NixOS 上自动挂载/永久挂载外部设备

我有一个 U 盘和一个 NTFS 硬盘分区,我想在 NixOS 中使用它们。在其他一些发行版上,我会使用ntfs-3gin 来安装它/mnt。但在 NixOS 上,该目录不存在;我想 NixOS 还有一些其他规范的方式和/或地方可以做到这一点。

在 NixOS 中,应该如何设置外部分区的自动挂载,最好使用configuration.nix

答案1

嗯,我通常使用bashmountudisksctl安装 USB 记忆棒。它们将安装在/run/media/$(user name)/$(drive label or UUID).

但如果您谈论的是内部硬盘或本地硬盘中的分区,最简单的方法是:

  1. 创建您喜欢的目录,如 /mnt/windows-partition
  2. 在该目录中安装所需的分区,例如 /dev/sdn5:

$mount /dev/sdn5 /mnt/windows-partition

  1. 跑步nixos 生成配置。它将更新/etc/nixos/硬件配置.nix以匹配新的分区配置(以及配置.nix保持不变,除非您使用- 力量选项)。
  2. 最后,一个nixos-rebuild switch

答案2

我个人使用尤迪卡为了那个原因。这意味着,如果我想安装 USB 记忆棒,我只需将其插入并运行:

$ udisksctl mount -b /dev/sdc

我使用别名udisksctl mount -budm使其更短。然后,该设备将被安装/run/media/$USER/$DEVICE_LABEL并可供您使用。

我认为,一些工具(例如鹦鹉螺LDM)可以自动为您完成此操作。

编辑:啊,我刚刚发现udisks也可以自动挂载设备。

答案3

直接修改hardware-configuration.nix文件


为了获得与其他答案中提到的相同的结果,您还可以fileSystems在以下位置添加另一个配置条目hardware-configuration.nix

{
  ...

  fileSystems."${mount_location}" = {
    device = "/dev/${device}";
    fsType = "${filesystem_extension}";
  };

  ...
}
笔记:

要获取有关特定分区的文件系统扩展信息,请运行:

df -T | grep /dev/${device}

/dev/sda1具有文件系统扩展名的设备的示例配置ext4,将安装在/mnt/sda1以下位置:

{
  ...

  fileSystems."/mnt/sda1" = {
    device = "/dev/sda1";
    fsType = "ext4";
  };

  ...
}

我认为这样的解决方案更加独特,因为设备名称不会像nixos-generate-config解决方案中那样被 NixOS 特定命名空间覆盖。

相关内容