Entry

NixOS: mounting multiple Hetzner storageboxes

Solution

{
  # ...
  fileSystems = builtins.mapAttrs (name: value: {
    device = "//${value.storageUser}.your-storagebox.de/${value.storageUser}";
    fsType = "cifs";
      mountPoint = name;
      options = [
        # https://wiki.nixos.org/wiki/Samba#CIFS_mount_configuration
        "x-systemd.automount"
        "noauto"
        "x-systemd.idle-timeout=60"
        "x-systemd.device-timeout=5s"
        "x-systemd.mount-timeout=5s"
        "credentials=${value.credentials}"
        # https://docs.hetzner.com/robot/storage-box/access/access-samba-cifs#encrypt-samba-connection
        "iocharset=utf8"
        "rw"
        "nofail"
        "seal"
        # Custom
        "mfsymlinks"
        "uid=${value.uid}"
        "gid=${value.gid}"
        "file_mode=0740"
        "dir_mode=0740"
      ];
  }) {
    "/mnt/storage-1" = {
      storageUser = "uxxxxxx-sub1";
      credentials = "/home/user/sb-1.conf";
      uid = builtins.toString config.users.users.foo.uid;
      gid = builtins.toString config.users.groups.users.gid;
    };
    "/mnt/storage-2" = {
      storageUser = "uxxxxxx-sub2";
      credentials = "/home/user/sb-2.conf";
      uid = builtins.toString config.users.users.bar.uid;
      gid = builtins.toString config.users.groups.users.gid;
    };
    "/mnt/storage-2" = {
      storageUser = "uxxxxxx-sub4";
      credentials = "/home/user/sb-3.conf";
      uid = builtins.toString config.users.users.example.uid;
      gid = builtins.toString config.users.groups.users.gid;
    };
  };
  # ...
}