diff --git a/homeassistant/components/nextcloud/binary_sensor.py b/homeassistant/components/nextcloud/binary_sensor.py
index 0d960bea8ef077e81889d4e79e41b1e71a70232e..3cf3cc3ae2a7920334b98e2c314764bb471bb9db 100644
--- a/homeassistant/components/nextcloud/binary_sensor.py
+++ b/homeassistant/components/nextcloud/binary_sensor.py
@@ -25,7 +25,7 @@ async def async_setup_entry(
     coordinator: NextcloudDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
     async_add_entities(
         [
-            NextcloudBinarySensor(coordinator, name)
+            NextcloudBinarySensor(coordinator, name, entry)
             for name in coordinator.data
             if name in BINARY_SENSORS
         ]
diff --git a/homeassistant/components/nextcloud/entity.py b/homeassistant/components/nextcloud/entity.py
index 54976351dd288ec2d0e863282b49f5f5a6778e94..ed5882cfe74908b08bb136e98670fcbc477374e1 100644
--- a/homeassistant/components/nextcloud/entity.py
+++ b/homeassistant/components/nextcloud/entity.py
@@ -1,23 +1,31 @@
 """Base entity for the Nextcloud integration."""
 
 
+from homeassistant.config_entries import ConfigEntry
+from homeassistant.helpers.entity import DeviceInfo
 from homeassistant.helpers.update_coordinator import CoordinatorEntity
 
+from .const import DOMAIN
 from .coordinator import NextcloudDataUpdateCoordinator
 
 
 class NextcloudEntity(CoordinatorEntity[NextcloudDataUpdateCoordinator]):
     """Base Nextcloud entity."""
 
+    _attr_has_entity_name = True
     _attr_icon = "mdi:cloud"
 
-    def __init__(self, coordinator: NextcloudDataUpdateCoordinator, item: str) -> None:
+    def __init__(
+        self, coordinator: NextcloudDataUpdateCoordinator, item: str, entry: ConfigEntry
+    ) -> None:
         """Initialize the Nextcloud sensor."""
         super().__init__(coordinator)
         self.item = item
         self._attr_name = item
-
-    @property
-    def unique_id(self) -> str:
-        """Return the unique ID for this sensor."""
-        return f"{self.coordinator.url}#{self.item}"
+        self._attr_unique_id = f"{coordinator.url}#{item}"
+        self._attr_device_info = DeviceInfo(
+            name="Nextcloud",
+            identifiers={(DOMAIN, entry.entry_id)},
+            sw_version=coordinator.data.get("nextcloud_system_version"),
+            configuration_url=coordinator.url,
+        )
diff --git a/homeassistant/components/nextcloud/sensor.py b/homeassistant/components/nextcloud/sensor.py
index eb6043e4bc6d5892a3052b11e4cf87ec0f4b14b6..a5df872e0843f92377c3cdccdcee47d94185149a 100644
--- a/homeassistant/components/nextcloud/sensor.py
+++ b/homeassistant/components/nextcloud/sensor.py
@@ -65,7 +65,7 @@ async def async_setup_entry(
     coordinator: NextcloudDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
     async_add_entities(
         [
-            NextcloudSensor(coordinator, name)
+            NextcloudSensor(coordinator, name, entry)
             for name in coordinator.data
             if name in SENSORS
         ]