diff --git a/apps/config/package-lock.json b/apps/config/package-lock.json
index 18897f56..5bf452e5 100644
--- a/apps/config/package-lock.json
+++ b/apps/config/package-lock.json
@@ -11,7 +11,7 @@
                 "@eslint/js": "9.26.0",
                 "@stylistic/eslint-plugin": "4.2.0",
                 "eslint": "9.26.0",
-                "eslint-plugin-jsdoc": "50.6.11",
+                "eslint-plugin-jsdoc": "50.6.14",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3",
@@ -991,9 +991,9 @@
             }
         },
         "node_modules/eslint-plugin-jsdoc": {
-            "version": "50.6.11",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.11.tgz",
-            "integrity": "sha512-k4+MnBCGR8cuIB5MZ++FGd4gbXxjob2rX1Nq0q3nWFF4xSGZENTgTLZSjb+u9B8SAnP6lpGV2FJrBjllV3pVSg==",
+            "version": "50.6.14",
+            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.14.tgz",
+            "integrity": "sha512-JUudvooQbUx3iB8n/MzXMOV/VtaXq7xL4CeXhYryinr8osck7nV6fE2/xUXTiH3epPXcvq6TE3HQfGQuRHErTQ==",
             "license": "BSD-3-Clause",
             "dependencies": {
                 "@es-joy/jsdoccomment": "~0.49.0",
diff --git a/apps/config/package.json b/apps/config/package.json
index e47e123d..87c8c1c9 100644
--- a/apps/config/package.json
+++ b/apps/config/package.json
@@ -7,7 +7,7 @@
         "@eslint/js": "9.26.0",
         "@stylistic/eslint-plugin": "4.2.0",
         "eslint": "9.26.0",
-        "eslint-plugin-jsdoc": "50.6.11",
+        "eslint-plugin-jsdoc": "50.6.14",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.3",
diff --git a/apps/extract-subs/default.nix b/apps/extract-subs/default.nix
index 2128d2ab..7a5e47da 100644
--- a/apps/extract-subs/default.nix
+++ b/apps/extract-subs/default.nix
@@ -5,7 +5,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-s+4MXZBCmCEcqT4qCETa/aQqdeAzluScILeye6h8cfg=";
+  npmDepsHash = "sha256-bIP52Zrt2hyPTAA/dti0Fvd387ZmZ7FnvXDo+0UGXmI=";
 
   runtimeInputs = [
     ffmpeg-full
diff --git a/apps/extract-subs/package-lock.json b/apps/extract-subs/package-lock.json
index eb2a3556..4da481ee 100644
--- a/apps/extract-subs/package-lock.json
+++ b/apps/extract-subs/package-lock.json
@@ -628,9 +628,9 @@
             }
         },
         "node_modules/@modelcontextprotocol/sdk": {
-            "version": "1.11.0",
-            "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.0.tgz",
-            "integrity": "sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==",
+            "version": "1.11.1",
+            "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.1.tgz",
+            "integrity": "sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ==",
             "license": "MIT",
             "dependencies": {
                 "content-type": "^1.0.5",
@@ -1255,9 +1255,9 @@
             }
         },
         "node_modules/eventsource": {
-            "version": "3.0.6",
-            "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.6.tgz",
-            "integrity": "sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==",
+            "version": "3.0.7",
+            "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz",
+            "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
             "license": "MIT",
             "dependencies": {
                 "eventsource-parser": "^3.0.1"
diff --git a/apps/list2series/default.nix b/apps/list2series/default.nix
index b19088f1..44505e1c 100644
--- a/apps/list2series/default.nix
+++ b/apps/list2series/default.nix
@@ -1,7 +1,7 @@
 {buildApp, ...}:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-UR2hivKGRenJ1W0iEqiyE9JSEhrn6yRu3gFCZAv5rBw=";
+  npmDepsHash = "sha256-P7Eyp3CjUh0tCCFl4jkiwf3nTtyKA02XOGqMbYpylTw=";
 
   runtimeInputs = [];
 
diff --git a/apps/list2series/package-lock.json b/apps/list2series/package-lock.json
index 5f7fc4a2..a3ec9765 100644
--- a/apps/list2series/package-lock.json
+++ b/apps/list2series/package-lock.json
@@ -31,7 +31,7 @@
                 "@eslint/js": "9.26.0",
                 "@stylistic/eslint-plugin": "4.2.0",
                 "eslint": "9.26.0",
-                "eslint-plugin-jsdoc": "50.6.11",
+                "eslint-plugin-jsdoc": "50.6.14",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3",
@@ -628,9 +628,9 @@
             }
         },
         "node_modules/@modelcontextprotocol/sdk": {
-            "version": "1.11.0",
-            "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.0.tgz",
-            "integrity": "sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==",
+            "version": "1.11.1",
+            "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.1.tgz",
+            "integrity": "sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ==",
             "license": "MIT",
             "dependencies": {
                 "content-type": "^1.0.5",
@@ -1300,9 +1300,9 @@
             }
         },
         "node_modules/eventsource": {
-            "version": "3.0.6",
-            "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.6.tgz",
-            "integrity": "sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==",
+            "version": "3.0.7",
+            "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz",
+            "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
             "license": "MIT",
             "dependencies": {
                 "eventsource-parser": "^3.0.1"
diff --git a/apps/mc-mods/default.nix b/apps/mc-mods/default.nix
index 88436151..0e46ff4d 100644
--- a/apps/mc-mods/default.nix
+++ b/apps/mc-mods/default.nix
@@ -5,7 +5,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-3GgeXWvcx0mHIcrXrPI3+VDPehAA9tH50ZWLp9WCPRs=";
+  npmDepsHash = "sha256-Z3WaI1PMiKAEzzOCbSbeAudekqijParW0nWNbU9TDyE=";
 
   runtimeInputs = [
     nodejs_latest
diff --git a/apps/mc-mods/package-lock.json b/apps/mc-mods/package-lock.json
index 739be88b..e452ff8a 100644
--- a/apps/mc-mods/package-lock.json
+++ b/apps/mc-mods/package-lock.json
@@ -30,7 +30,7 @@
                 "@eslint/js": "9.26.0",
                 "@stylistic/eslint-plugin": "4.2.0",
                 "eslint": "9.26.0",
-                "eslint-plugin-jsdoc": "50.6.11",
+                "eslint-plugin-jsdoc": "50.6.14",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3",
@@ -627,9 +627,9 @@
             }
         },
         "node_modules/@modelcontextprotocol/sdk": {
-            "version": "1.11.0",
-            "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.0.tgz",
-            "integrity": "sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==",
+            "version": "1.11.1",
+            "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.1.tgz",
+            "integrity": "sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ==",
             "license": "MIT",
             "dependencies": {
                 "content-type": "^1.0.5",
@@ -1246,9 +1246,9 @@
             }
         },
         "node_modules/eventsource": {
-            "version": "3.0.6",
-            "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.6.tgz",
-            "integrity": "sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==",
+            "version": "3.0.7",
+            "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz",
+            "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
             "license": "MIT",
             "dependencies": {
                 "eventsource-parser": "^3.0.1"
diff --git a/apps/pin-inputs/default.nix b/apps/pin-inputs/default.nix
index 0400ebc3..3f461faf 100644
--- a/apps/pin-inputs/default.nix
+++ b/apps/pin-inputs/default.nix
@@ -1,7 +1,7 @@
 {buildApp, ...}:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-I0jJrKPQNtkiFhVa2vQc4C3T2U0mtt59jlWdmavc8xM=";
+  npmDepsHash = "sha256-jLiKRPXWrGl2p8pikGpnW6Yl1qcnvGqcDa77vih6Vvs=";
 
   runtimeInputs = [];
 
diff --git a/apps/pin-inputs/package-lock.json b/apps/pin-inputs/package-lock.json
index f085e05b..2e3ccc4f 100644
--- a/apps/pin-inputs/package-lock.json
+++ b/apps/pin-inputs/package-lock.json
@@ -30,7 +30,7 @@
                 "@eslint/js": "9.26.0",
                 "@stylistic/eslint-plugin": "4.2.0",
                 "eslint": "9.26.0",
-                "eslint-plugin-jsdoc": "50.6.11",
+                "eslint-plugin-jsdoc": "50.6.14",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3",
@@ -627,9 +627,9 @@
             }
         },
         "node_modules/@modelcontextprotocol/sdk": {
-            "version": "1.11.0",
-            "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.0.tgz",
-            "integrity": "sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==",
+            "version": "1.11.1",
+            "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.1.tgz",
+            "integrity": "sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ==",
             "license": "MIT",
             "dependencies": {
                 "content-type": "^1.0.5",
@@ -1246,9 +1246,9 @@
             }
         },
         "node_modules/eventsource": {
-            "version": "3.0.6",
-            "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.6.tgz",
-            "integrity": "sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==",
+            "version": "3.0.7",
+            "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz",
+            "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
             "license": "MIT",
             "dependencies": {
                 "eventsource-parser": "^3.0.1"
diff --git a/apps/update-sources/default.nix b/apps/update-sources/default.nix
index b390a147..e02ce50a 100644
--- a/apps/update-sources/default.nix
+++ b/apps/update-sources/default.nix
@@ -12,7 +12,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-mUU1yZ30ubDWYRgWwdskGZOTYaA65DFFYPGV3Wbkh1M=";
+  npmDepsHash = "sha256-P2VhFaR/8Sdhj127a6sfK6QrzTdXCXjxZm/HIq8hTHc=";
 
   runtimeInputs = [
     curl
@@ -22,7 +22,8 @@ buildApp {
     nix-update
     nodejs_latest
     prefetch-npm-deps
-    (callPackage ../../modules/docker/updateImage.nix {})
+    # We want to use the one from my config with authfile
+    # (callPackage ../../modules/docker/updateImage.nix {})
     (callPackage ../../configurations/homie/modules/home-assistant/netdaemon/update.nix {})
   ];
 
diff --git a/apps/update-sources/package-lock.json b/apps/update-sources/package-lock.json
index f38fefd8..2cc46a6b 100644
--- a/apps/update-sources/package-lock.json
+++ b/apps/update-sources/package-lock.json
@@ -627,9 +627,9 @@
             }
         },
         "node_modules/@modelcontextprotocol/sdk": {
-            "version": "1.11.0",
-            "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.0.tgz",
-            "integrity": "sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==",
+            "version": "1.11.1",
+            "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.1.tgz",
+            "integrity": "sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ==",
             "license": "MIT",
             "dependencies": {
                 "content-type": "^1.0.5",
@@ -1246,9 +1246,9 @@
             }
         },
         "node_modules/eventsource": {
-            "version": "3.0.6",
-            "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.6.tgz",
-            "integrity": "sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==",
+            "version": "3.0.7",
+            "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz",
+            "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
             "license": "MIT",
             "dependencies": {
                 "eventsource-parser": "^3.0.1"
diff --git a/configurations/homie/modules/home-assistant/netdaemon/.version b/configurations/homie/modules/home-assistant/netdaemon/.version
index 3c88528a..be7aba0b 100644
--- a/configurations/homie/modules/home-assistant/netdaemon/.version
+++ b/configurations/homie/modules/home-assistant/netdaemon/.version
@@ -1 +1 @@
-25.18.0
+25.18.1
diff --git a/configurations/homie/modules/home-assistant/netdaemon/HomeAssistantGenerated b/configurations/homie/modules/home-assistant/netdaemon/HomeAssistantGenerated
index b5afa1e0..b218bdfb 100644
--- a/configurations/homie/modules/home-assistant/netdaemon/HomeAssistantGenerated
+++ b/configurations/homie/modules/home-assistant/netdaemon/HomeAssistantGenerated
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
-// Generated using NetDaemon CodeGenerator nd-codegen v25.18.0.0
-//   At: 2025-05-07T22:05:30.0907220-04:00
+// Generated using NetDaemon CodeGenerator nd-codegen v25.18.1.0
+//   At: 2025-05-10T19:44:57.7189076-04:00
 //
 // *** Make sure the version of the codegen tool and your nugets NetDaemon.* have the same version.***
 // You can use following command to keep it up to date with the latest version:
@@ -47,6 +47,7 @@ public static class GeneratedExtensions
         serviceCollection.AddTransient<ConversationEntities>();
         serviceCollection.AddTransient<DeviceTrackerEntities>();
         serviceCollection.AddTransient<InputBooleanEntities>();
+        serviceCollection.AddTransient<InputNumberEntities>();
         serviceCollection.AddTransient<InputTextEntities>();
         serviceCollection.AddTransient<LockEntities>();
         serviceCollection.AddTransient<NumberEntities>();
@@ -62,11 +63,10 @@ public static class GeneratedExtensions
         serviceCollection.AddTransient<TimerEntities>();
         serviceCollection.AddTransient<TodoEntities>();
         serviceCollection.AddTransient<TtsEntities>();
+        serviceCollection.AddTransient<UpdateEntities>();
         serviceCollection.AddTransient<WakeWordEntities>();
         serviceCollection.AddTransient<WeatherEntities>();
         serviceCollection.AddTransient<ZoneEntities>();
-        serviceCollection.AddTransient<UpdateEntities>();
-        serviceCollection.AddTransient<InputNumberEntities>();
         serviceCollection.AddTransient<InputSelectEntities>();
         serviceCollection.AddTransient<Services>();
         serviceCollection.AddTransient<AndroidtvServices>();
@@ -120,6 +120,7 @@ public static class GeneratedExtensions
         serviceCollection.AddTransient<TodoServices>();
         serviceCollection.AddTransient<TtsServices>();
         serviceCollection.AddTransient<UpdateServices>();
+        serviceCollection.AddTransient<WeatherServices>();
         serviceCollection.AddTransient<YamahaSoundbarServices>();
         serviceCollection.AddTransient<ZoneServices>();
         return serviceCollection;
@@ -195,6 +196,8 @@ public interface IEntities
 
     InputBooleanEntities InputBoolean { get; }
 
+    InputNumberEntities InputNumber { get; }
+
     InputTextEntities InputText { get; }
 
     LockEntities Lock { get; }
@@ -223,16 +226,14 @@ public interface IEntities
 
     TtsEntities Tts { get; }
 
+    UpdateEntities Update { get; }
+
     WakeWordEntities WakeWord { get; }
 
     WeatherEntities Weather { get; }
 
     ZoneEntities Zone { get; }
 
-    UpdateEntities Update { get; }
-
-    InputNumberEntities InputNumber { get; }
-
     InputSelectEntities InputSelect { get; }
 }
 
@@ -254,6 +255,7 @@ public partial class Entities : IEntities
     public ConversationEntities Conversation => new(_haContext);
     public DeviceTrackerEntities DeviceTracker => new(_haContext);
     public InputBooleanEntities InputBoolean => new(_haContext);
+    public InputNumberEntities InputNumber => new(_haContext);
     public InputTextEntities InputText => new(_haContext);
     public LockEntities Lock => new(_haContext);
     public NumberEntities Number => new(_haContext);
@@ -268,11 +270,10 @@ public partial class Entities : IEntities
     public TimerEntities Timer => new(_haContext);
     public TodoEntities Todo => new(_haContext);
     public TtsEntities Tts => new(_haContext);
+    public UpdateEntities Update => new(_haContext);
     public WakeWordEntities WakeWord => new(_haContext);
     public WeatherEntities Weather => new(_haContext);
     public ZoneEntities Zone => new(_haContext);
-    public UpdateEntities Update => new(_haContext);
-    public InputNumberEntities InputNumber => new(_haContext);
     public InputSelectEntities InputSelect => new(_haContext);
 }
 
@@ -304,16 +305,15 @@ public partial class MediaPlayerEntities
     public IEnumerable<MediaPlayerEntity> EnumerateAll() => _haContext.GetAllEntities().Where(e => e.EntityId.StartsWith("media_player.")).Select(e => new MediaPlayerEntity(e));
     ///<summary>Android TV 192.168.0.106</summary>
     public MediaPlayerEntity AndroidTv1921680106 => new(_haContext, "media_player.android_tv_192_168_0_106");
-    ///<summary>Living Room Speaker</summary>
-    public MediaPlayerEntity LivingRoomSpeaker => new(_haContext, "media_player.living_room_speaker");
     ///<summary>YAS_209</summary>
-    public MediaPlayerEntity LivingRoomSpeaker2 => new(_haContext, "media_player.living_room_speaker_2");
+    public MediaPlayerEntity LivingRoomSpeaker => new(_haContext, "media_player.living_room_speaker");
     ///<summary>UE Boom 2</summary>
     public MediaPlayerEntity MusicPlayerDaemon => new(_haContext, "media_player.music_player_daemon");
     ///<summary>Living room TV</summary>
     public MediaPlayerEntity Onn4kStreamingBox => new(_haContext, "media_player.onn_4k_streaming_box");
     ///<summary>Living room TV</summary>
     public MediaPlayerEntity Onn4kStreamingBox2 => new(_haContext, "media_player.onn_4k_streaming_box_2");
+    ///<summary>Spotify matt</summary>
     public MediaPlayerEntity SpotifyMatt => new(_haContext, "media_player.spotify_matt");
     ///<summary>SpotifyPlus matt</summary>
     public MediaPlayerEntity Spotifyplus => new(_haContext, "media_player.spotifyplus");
@@ -361,7 +361,7 @@ public partial class BinarySensorEntities
 
     /// <summary>Enumerates all binary_sensor entities currently registered (at runtime) in Home Assistant as BinarySensorEntity</summary>
     public IEnumerable<BinarySensorEntity> EnumerateAll() => _haContext.GetAllEntities().Where(e => e.EntityId.StartsWith("binary_sensor.")).Select(e => new BinarySensorEntity(e));
-    ///<summary>WAN status</summary>
+    ///<summary>CODA-4680-FIZ WAN status</summary>
     public BinarySensorEntity Coda4680FizWanStatus => new(_haContext, "binary_sensor.coda_4680_fiz_wan_status");
     ///<summary>M5Stack Atom Echo 31196c Button</summary>
     public BinarySensorEntity M5stackAtomEcho31196cButton => new(_haContext, "binary_sensor.m5stack_atom_echo_31196c_button");
@@ -503,6 +503,24 @@ public partial class InputBooleanEntities
     public InputBooleanEntity NetdaemonNetDaemonConfigAppsTimerSetupSetup => new(_haContext, "input_boolean.netdaemon_net_daemon_config_apps_timer_setup_setup");
 }
 
+public partial class InputNumberEntities
+{
+    private readonly IHaContext _haContext;
+    public InputNumberEntities(IHaContext haContext)
+    {
+        _haContext = haContext;
+    }
+
+    /// <summary>Enumerates all input_number entities currently registered (at runtime) in Home Assistant as InputNumberEntity</summary>
+    public IEnumerable<InputNumberEntity> EnumerateAll() => _haContext.GetAllEntities().Where(e => e.EntityId.StartsWith("input_number.")).Select(e => new InputNumberEntity(e));
+    ///<summary>BathroomLightBrightness</summary>
+    public InputNumberEntity BathroomLightBrightness => new(_haContext, "input_number.bathroom_light_brightness");
+    ///<summary>BathroomLightTemperature</summary>
+    public InputNumberEntity BathroomLightTemperature => new(_haContext, "input_number.bathroom_light_temperature");
+    ///<summary>Material You Contrast Level</summary>
+    public InputNumberEntity MaterialYouContrast => new(_haContext, "input_number.material_you_contrast");
+}
+
 public partial class InputTextEntities
 {
     private readonly IHaContext _haContext;
@@ -669,7 +687,7 @@ public partial class SensorEntities
     public SensorEntity BackupLastSuccessfulAutomaticBackup => new(_haContext, "sensor.backup_last_successful_automatic_backup");
     ///<summary>Backup Next scheduled automatic backup</summary>
     public SensorEntity BackupNextScheduledAutomaticBackup => new(_haContext, "sensor.backup_next_scheduled_automatic_backup");
-    ///<summary>External IP</summary>
+    ///<summary>CODA-4680-FIZ External IP</summary>
     public SensorEntity Coda4680FizExternalIp => new(_haContext, "sensor.coda_4680_fiz_external_ip");
     ///<summary>Material Rounded Base Color Matt</summary>
     public SensorEntity MaterialRoundedBaseColorMatt => new(_haContext, "sensor.material_rounded_base_color_matt");
@@ -763,13 +781,13 @@ public partial class SensorEntities
     public SensorEntity Zigbee2mqttBridgeVersion => new(_haContext, "sensor.zigbee2mqtt_bridge_version");
     ///<summary>Estimated distance</summary>
     public NumericSensorEntity Care4b6bEstimatedDistance => new(_haContext, "sensor.care_4b6b_estimated_distance");
-    ///<summary>Data received</summary>
+    ///<summary>CODA-4680-FIZ Data received</summary>
     public NumericSensorEntity Coda4680FizDataReceived => new(_haContext, "sensor.coda_4680_fiz_data_received");
-    ///<summary>Data sent</summary>
+    ///<summary>CODA-4680-FIZ Data sent</summary>
     public NumericSensorEntity Coda4680FizDataSent => new(_haContext, "sensor.coda_4680_fiz_data_sent");
-    ///<summary>Download speed</summary>
+    ///<summary>CODA-4680-FIZ Download speed</summary>
     public NumericSensorEntity Coda4680FizDownloadSpeed => new(_haContext, "sensor.coda_4680_fiz_download_speed");
-    ///<summary>Upload speed</summary>
+    ///<summary>CODA-4680-FIZ Upload speed</summary>
     public NumericSensorEntity Coda4680FizUploadSpeed => new(_haContext, "sensor.coda_4680_fiz_upload_speed");
     ///<summary>Estimated distance</summary>
     public NumericSensorEntity Mc2000103066422c1EstimatedDistance => new(_haContext, "sensor.mc200_01_030664_22c1_estimated_distance");
@@ -925,6 +943,22 @@ public partial class TtsEntities
     public TtsEntity Piper => new(_haContext, "tts.piper");
 }
 
+public partial class UpdateEntities
+{
+    private readonly IHaContext _haContext;
+    public UpdateEntities(IHaContext haContext)
+    {
+        _haContext = haContext;
+    }
+
+    /// <summary>Enumerates all update entities currently registered (at runtime) in Home Assistant as UpdateEntity</summary>
+    public IEnumerable<UpdateEntity> EnumerateAll() => _haContext.GetAllEntities().Where(e => e.EntityId.StartsWith("update.")).Select(e => new UpdateEntity(e));
+    ///<summary>SLZB-06p7 Core firmware</summary>
+    public UpdateEntity Slzb06p7CoreFirmware => new(_haContext, "update.slzb_06p7_core_firmware");
+    ///<summary>SLZB-06p7 Zigbee firmware</summary>
+    public UpdateEntity Slzb06p7ZigbeeFirmware => new(_haContext, "update.slzb_06p7_zigbee_firmware");
+}
+
 public partial class WakeWordEntities
 {
     private readonly IHaContext _haContext;
@@ -951,7 +985,7 @@ public partial class WeatherEntities
     public IEnumerable<WeatherEntity> EnumerateAll() => _haContext.GetAllEntities().Where(e => e.EntityId.StartsWith("weather.")).Select(e => new WeatherEntity(e));
     ///<summary>Home</summary>
     public WeatherEntity ForecastHome => new(_haContext, "weather.forecast_home");
-    ///<summary>Home</summary>
+    ///<summary>Forecast Home</summary>
     public WeatherEntity ForecastHome2 => new(_haContext, "weather.forecast_home_2");
 }
 
@@ -969,40 +1003,6 @@ public partial class ZoneEntities
     public ZoneEntity Home => new(_haContext, "zone.home");
 }
 
-public partial class UpdateEntities
-{
-    private readonly IHaContext _haContext;
-    public UpdateEntities(IHaContext haContext)
-    {
-        _haContext = haContext;
-    }
-
-    /// <summary>Enumerates all update entities currently registered (at runtime) in Home Assistant as UpdateEntity</summary>
-    public IEnumerable<UpdateEntity> EnumerateAll() => _haContext.GetAllEntities().Where(e => e.EntityId.StartsWith("update.")).Select(e => new UpdateEntity(e));
-    ///<summary>SLZB-06p7 Core firmware</summary>
-    public UpdateEntity Slzb06p7CoreFirmware => new(_haContext, "update.slzb_06p7_core_firmware");
-    ///<summary>SLZB-06p7 Zigbee firmware</summary>
-    public UpdateEntity Slzb06p7ZigbeeFirmware => new(_haContext, "update.slzb_06p7_zigbee_firmware");
-}
-
-public partial class InputNumberEntities
-{
-    private readonly IHaContext _haContext;
-    public InputNumberEntities(IHaContext haContext)
-    {
-        _haContext = haContext;
-    }
-
-    /// <summary>Enumerates all input_number entities currently registered (at runtime) in Home Assistant as InputNumberEntity</summary>
-    public IEnumerable<InputNumberEntity> EnumerateAll() => _haContext.GetAllEntities().Where(e => e.EntityId.StartsWith("input_number.")).Select(e => new InputNumberEntity(e));
-    ///<summary>BathroomLightBrightness</summary>
-    public InputNumberEntity BathroomLightBrightness => new(_haContext, "input_number.bathroom_light_brightness");
-    ///<summary>BathroomLightTemperature</summary>
-    public InputNumberEntity BathroomLightTemperature => new(_haContext, "input_number.bathroom_light_temperature");
-    ///<summary>Material You Contrast Level</summary>
-    public InputNumberEntity MaterialYouContrast => new(_haContext, "input_number.material_you_contrast");
-}
-
 public partial class InputSelectEntities
 {
     private readonly IHaContext _haContext;
@@ -1084,15 +1084,6 @@ public partial record LightAttributes
     [JsonPropertyName("friendly_name")]
     public string? FriendlyName { get; init; }
 
-    [JsonPropertyName("off_with_transition")]
-    public bool? OffWithTransition { get; init; }
-
-    [JsonPropertyName("off_brightness")]
-    public object? OffBrightness { get; init; }
-
-    [JsonPropertyName("restored")]
-    public bool? Restored { get; init; }
-
     [JsonPropertyName("color_options")]
     public object? ColorOptions { get; init; }
 
@@ -1206,9 +1197,6 @@ public partial record MediaPlayerAttributes
     [JsonPropertyName("sound_mode_raw")]
     public string? SoundModeRaw { get; init; }
 
-    [JsonPropertyName("assumed_state")]
-    public bool? AssumedState { get; init; }
-
     [JsonPropertyName("group_members")]
     public object? GroupMembers { get; init; }
 
@@ -1236,15 +1224,24 @@ public partial record MediaPlayerAttributes
     [JsonPropertyName("firmware")]
     public string? Firmware { get; init; }
 
+    [JsonPropertyName("assumed_state")]
+    public bool? AssumedState { get; init; }
+
     [JsonPropertyName("sp_device_id")]
     public object? SpDeviceId { get; init; }
 
-    [JsonPropertyName("sp_device_name")]
-    public object? SpDeviceName { get; init; }
-
     [JsonPropertyName("sp_device_is_brand_sonos")]
     public bool? SpDeviceIsBrandSonos { get; init; }
 
+    [JsonPropertyName("sp_device_is_chromecast")]
+    public bool? SpDeviceIsChromecast { get; init; }
+
+    [JsonPropertyName("sp_device_music_source")]
+    public object? SpDeviceMusicSource { get; init; }
+
+    [JsonPropertyName("sp_device_name")]
+    public object? SpDeviceName { get; init; }
+
     [JsonPropertyName("sp_item_type")]
     public string? SpItemType { get; init; }
 
@@ -1263,6 +1260,9 @@ public partial record MediaPlayerAttributes
     [JsonPropertyName("sp_user_email")]
     public string? SpUserEmail { get; init; }
 
+    [JsonPropertyName("sp_user_has_web_player_credentials")]
+    public bool? SpUserHasWebPlayerCredentials { get; init; }
+
     [JsonPropertyName("sp_user_id")]
     public string? SpUserId { get; init; }
 
@@ -1272,29 +1272,20 @@ public partial record MediaPlayerAttributes
     [JsonPropertyName("sp_user_uri")]
     public string? SpUserUri { get; init; }
 
-    [JsonPropertyName("sp_device_is_chromecast")]
-    public bool? SpDeviceIsChromecast { get; init; }
-
-    [JsonPropertyName("sp_device_music_source")]
-    public object? SpDeviceMusicSource { get; init; }
+    [JsonPropertyName("volume_step")]
+    public double? VolumeStep { get; init; }
 
     [JsonPropertyName("sp_source_list_hide")]
     public IReadOnlyList<object>? SpSourceListHide { get; init; }
 
-    [JsonPropertyName("restored")]
-    public bool? Restored { get; init; }
+    [JsonPropertyName("media_playlist")]
+    public string? MediaPlaylist { get; init; }
 
-    [JsonPropertyName("sp_user_has_web_player_credentials")]
-    public bool? SpUserHasWebPlayerCredentials { get; init; }
-
-    [JsonPropertyName("volume_step")]
-    public double? VolumeStep { get; init; }
+    [JsonPropertyName("sp_device_is_restricted")]
+    public bool? SpDeviceIsRestricted { get; init; }
 
     [JsonPropertyName("sp_play_time_remaining_est")]
     public object? SpPlayTimeRemainingEst { get; init; }
-
-    [JsonPropertyName("media_playlist")]
-    public string? MediaPlaylist { get; init; }
 }
 
 public partial record AssistSatelliteEntity : Entity<AssistSatelliteEntity, EntityState<AssistSatelliteAttributes>, AssistSatelliteAttributes>
@@ -1315,9 +1306,6 @@ public partial record AssistSatelliteAttributes
 
     [JsonPropertyName("supported_features")]
     public double? SupportedFeatures { get; init; }
-
-    [JsonPropertyName("restored")]
-    public bool? Restored { get; init; }
 }
 
 public partial record AutomationEntity : Entity<AutomationEntity, EntityState<AutomationAttributes>, AutomationAttributes>, IAutomationEntityCore
@@ -1379,12 +1367,6 @@ public partial record BinarySensorAttributes
 
     [JsonPropertyName("icon")]
     public string? Icon { get; init; }
-
-    [JsonPropertyName("restored")]
-    public bool? Restored { get; init; }
-
-    [JsonPropertyName("supported_features")]
-    public double? SupportedFeatures { get; init; }
 }
 
 public partial record ButtonEntity : Entity<ButtonEntity, EntityState<ButtonAttributes>, ButtonAttributes>, IButtonEntityCore
@@ -1403,17 +1385,11 @@ public partial record ButtonAttributes
     [JsonPropertyName("device_class")]
     public string? DeviceClass { get; init; }
 
-    [JsonPropertyName("icon")]
-    public string? Icon { get; init; }
-
     [JsonPropertyName("friendly_name")]
     public string? FriendlyName { get; init; }
 
-    [JsonPropertyName("restored")]
-    public bool? Restored { get; init; }
-
-    [JsonPropertyName("supported_features")]
-    public double? SupportedFeatures { get; init; }
+    [JsonPropertyName("icon")]
+    public string? Icon { get; init; }
 }
 
 public partial record CalendarEntity : Entity<CalendarEntity, EntityState<CalendarAttributes>, CalendarAttributes>, ICalendarEntityCore
@@ -1541,6 +1517,50 @@ public partial record InputBooleanAttributes
     public string? Icon { get; init; }
 }
 
+public partial record InputNumberEntity : NumericEntity<InputNumberEntity, NumericEntityState<InputNumberAttributes>, InputNumberAttributes>, IInputNumberEntityCore
+{
+    public InputNumberEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
+    {
+    }
+
+    public InputNumberEntity(IEntityCore entity) : base(entity)
+    {
+    }
+}
+
+public partial record InputNumberAttributes
+{
+    [JsonPropertyName("restored")]
+    public bool? Restored { get; init; }
+
+    [JsonPropertyName("friendly_name")]
+    public string? FriendlyName { get; init; }
+
+    [JsonPropertyName("supported_features")]
+    public double? SupportedFeatures { get; init; }
+
+    [JsonPropertyName("initial")]
+    public object? Initial { get; init; }
+
+    [JsonPropertyName("editable")]
+    public bool? Editable { get; init; }
+
+    [JsonPropertyName("min")]
+    public double? Min { get; init; }
+
+    [JsonPropertyName("max")]
+    public double? Max { get; init; }
+
+    [JsonPropertyName("step")]
+    public double? Step { get; init; }
+
+    [JsonPropertyName("mode")]
+    public string? Mode { get; init; }
+
+    [JsonPropertyName("icon")]
+    public string? Icon { get; init; }
+}
+
 public partial record InputTextEntity : Entity<InputTextEntity, EntityState<InputTextAttributes>, InputTextAttributes>, IInputTextEntityCore
 {
     public InputTextEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
@@ -1594,9 +1614,6 @@ public partial record LockAttributes
 
     [JsonPropertyName("supported_features")]
     public double? SupportedFeatures { get; init; }
-
-    [JsonPropertyName("restored")]
-    public bool? Restored { get; init; }
 }
 
 public partial record NumberEntity : NumericEntity<NumberEntity, NumericEntityState<NumberAttributes>, NumberAttributes>, INumberEntityCore
@@ -1627,17 +1644,11 @@ public partial record NumberAttributes
     [JsonPropertyName("unit_of_measurement")]
     public string? UnitOfMeasurement { get; init; }
 
-    [JsonPropertyName("friendly_name")]
-    public string? FriendlyName { get; init; }
-
-    [JsonPropertyName("restored")]
-    public bool? Restored { get; init; }
-
-    [JsonPropertyName("supported_features")]
-    public double? SupportedFeatures { get; init; }
-
     [JsonPropertyName("device_class")]
     public string? DeviceClass { get; init; }
+
+    [JsonPropertyName("friendly_name")]
+    public string? FriendlyName { get; init; }
 }
 
 public partial record PersonEntity : Entity<PersonEntity, EntityState<PersonAttributes>, PersonAttributes>, IPersonEntityCore
@@ -1764,12 +1775,6 @@ public partial record SelectAttributes
     [JsonPropertyName("icon")]
     public string? Icon { get; init; }
 
-    [JsonPropertyName("restored")]
-    public bool? Restored { get; init; }
-
-    [JsonPropertyName("supported_features")]
-    public double? SupportedFeatures { get; init; }
-
     [JsonPropertyName("brightness")]
     public double? Brightness { get; init; }
 
@@ -1808,12 +1813,12 @@ public partial record SensorEntity : Entity<SensorEntity, EntityState<SensorAttr
 
 public partial record SensorAttributes
 {
-    [JsonPropertyName("friendly_name")]
-    public string? FriendlyName { get; init; }
-
     [JsonPropertyName("device_class")]
     public string? DeviceClass { get; init; }
 
+    [JsonPropertyName("friendly_name")]
+    public string? FriendlyName { get; init; }
+
     [JsonPropertyName("icon")]
     public string? Icon { get; init; }
 
@@ -1856,24 +1861,6 @@ public partial record SensorAttributes
     [JsonPropertyName("metered")]
     public bool? Metered { get; init; }
 
-    [JsonPropertyName("speech")]
-    public object? Speech { get; init; }
-
-    [JsonPropertyName("card")]
-    public object? Card { get; init; }
-
-    [JsonPropertyName("language")]
-    public string? Language { get; init; }
-
-    [JsonPropertyName("response_type")]
-    public string? ResponseType { get; init; }
-
-    [JsonPropertyName("data")]
-    public object? Data { get; init; }
-
-    [JsonPropertyName("Full State")]
-    public string? FullState { get; init; }
-
     [JsonPropertyName("album_org.kde.kdeconnect_tp")]
     public string? AlbumOrg_kde_kdeconnectTp { get; init; }
 
@@ -1898,17 +1885,29 @@ public partial record SensorAttributes
     [JsonPropertyName("total_media_session_count")]
     public double? TotalMediaSessionCount { get; init; }
 
-    [JsonPropertyName("1ca92e23-f087-4df7-b9a2-fd4b716a4bf6_19987_0")]
-    public double? _1ca92e23f0874df7b9a2fd4b716a4bf6199870 { get; init; }
+    [JsonPropertyName("fbdd0001-aa76-423a-b52f-6f74ecde9e3c_34987_1025")]
+    public double? Fbdd0001aa76423ab52f6f74ecde9e3c349871025 { get; init; }
 
-    [JsonPropertyName("74278bda-b644-4520-8f0c-720eaf059935_0_50585")]
-    public double? _74278bdab64445208f0c720eaf059935050585 { get; init; }
+    [JsonPropertyName("album_com.spotify.music")]
+    public string? AlbumCom_spotify_music { get; init; }
 
-    [JsonPropertyName("restored")]
-    public bool? Restored { get; init; }
+    [JsonPropertyName("artist_com.spotify.music")]
+    public string? ArtistCom_spotify_music { get; init; }
 
-    [JsonPropertyName("supported_features")]
-    public double? SupportedFeatures { get; init; }
+    [JsonPropertyName("duration_com.spotify.music")]
+    public double? DurationCom_spotify_music { get; init; }
+
+    [JsonPropertyName("media_id_com.spotify.music")]
+    public string? MediaIdCom_spotify_music { get; init; }
+
+    [JsonPropertyName("playback_position_com.spotify.music")]
+    public double? PlaybackPositionCom_spotify_music { get; init; }
+
+    [JsonPropertyName("playback_state_com.spotify.music")]
+    public string? PlaybackStateCom_spotify_music { get; init; }
+
+    [JsonPropertyName("title_com.spotify.music")]
+    public string? TitleCom_spotify_music { get; init; }
 }
 
 public partial record NumericSensorEntity : NumericEntity<NumericSensorEntity, NumericEntityState<NumericSensorAttributes>, NumericSensorAttributes>, ISensorEntityCore
@@ -2053,12 +2052,6 @@ public partial record SwitchAttributes
     [JsonPropertyName("friendly_name")]
     public string? FriendlyName { get; init; }
 
-    [JsonPropertyName("restored")]
-    public bool? Restored { get; init; }
-
-    [JsonPropertyName("supported_features")]
-    public double? SupportedFeatures { get; init; }
-
     [JsonPropertyName("icon")]
     public string? Icon { get; init; }
 
@@ -2153,6 +2146,62 @@ public partial record TtsAttributes
     public string? FriendlyName { get; init; }
 }
 
+public partial record UpdateEntity : Entity<UpdateEntity, EntityState<UpdateAttributes>, UpdateAttributes>, IUpdateEntityCore
+{
+    public UpdateEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
+    {
+    }
+
+    public UpdateEntity(IEntityCore entity) : base(entity)
+    {
+    }
+}
+
+public partial record UpdateAttributes
+{
+    [JsonPropertyName("auto_update")]
+    public bool? AutoUpdate { get; init; }
+
+    [JsonPropertyName("display_precision")]
+    public double? DisplayPrecision { get; init; }
+
+    [JsonPropertyName("installed_version")]
+    public string? InstalledVersion { get; init; }
+
+    [JsonPropertyName("in_progress")]
+    public bool? InProgress { get; init; }
+
+    [JsonPropertyName("latest_version")]
+    public string? LatestVersion { get; init; }
+
+    [JsonPropertyName("release_summary")]
+    public object? ReleaseSummary { get; init; }
+
+    [JsonPropertyName("release_url")]
+    public object? ReleaseUrl { get; init; }
+
+    [JsonPropertyName("skipped_version")]
+    public object? SkippedVersion { get; init; }
+
+    [JsonPropertyName("title")]
+    public object? Title { get; init; }
+
+    [JsonPropertyName("update_percentage")]
+    public object? UpdatePercentage { get; init; }
+
+    [JsonPropertyName("device_class")]
+    public string? DeviceClass { get; init; }
+
+    [JsonPropertyName("entity_picture")]
+    public string? EntityPicture { get; init; }
+
+    [JsonPropertyName("friendly_name")]
+    public string? FriendlyName { get; init; }
+
+    [JsonPropertyName("supported_features")]
+    public double? SupportedFeatures { get; init; }
+}
+
 public partial record WakeWordEntity : Entity<WakeWordEntity, EntityState<WakeWordAttributes>, WakeWordAttributes>
 {
     public WakeWordEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
@@ -2273,109 +2322,6 @@ public partial record ZoneAttributes
     public string? FriendlyName { get; init; }
 }
 
-public partial record UpdateEntity : Entity<UpdateEntity, EntityState<UpdateAttributes>, UpdateAttributes>, IUpdateEntityCore
-{
-    public UpdateEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
-    {
-    }
-
-    public UpdateEntity(IEntityCore entity) : base(entity)
-    {
-    }
-}
-
-public partial record UpdateAttributes
-{
-    [JsonPropertyName("auto_update")]
-    public bool? AutoUpdate { get; init; }
-
-    [JsonPropertyName("display_precision")]
-    public double? DisplayPrecision { get; init; }
-
-    [JsonPropertyName("installed_version")]
-    public string? InstalledVersion { get; init; }
-
-    [JsonPropertyName("in_progress")]
-    public bool? InProgress { get; init; }
-
-    [JsonPropertyName("latest_version")]
-    public string? LatestVersion { get; init; }
-
-    [JsonPropertyName("release_summary")]
-    public object? ReleaseSummary { get; init; }
-
-    [JsonPropertyName("release_url")]
-    public object? ReleaseUrl { get; init; }
-
-    [JsonPropertyName("skipped_version")]
-    public object? SkippedVersion { get; init; }
-
-    [JsonPropertyName("title")]
-    public object? Title { get; init; }
-
-    [JsonPropertyName("update_percentage")]
-    public object? UpdatePercentage { get; init; }
-
-    [JsonPropertyName("device_class")]
-    public string? DeviceClass { get; init; }
-
-    [JsonPropertyName("entity_picture")]
-    public string? EntityPicture { get; init; }
-
-    [JsonPropertyName("friendly_name")]
-    public string? FriendlyName { get; init; }
-
-    [JsonPropertyName("supported_features")]
-    public double? SupportedFeatures { get; init; }
-
-    [JsonPropertyName("restored")]
-    public bool? Restored { get; init; }
-}
-
-public partial record InputNumberEntity : NumericEntity<InputNumberEntity, NumericEntityState<InputNumberAttributes>, InputNumberAttributes>, IInputNumberEntityCore
-{
-    public InputNumberEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
-    {
-    }
-
-    public InputNumberEntity(IEntityCore entity) : base(entity)
-    {
-    }
-}
-
-public partial record InputNumberAttributes
-{
-    [JsonPropertyName("restored")]
-    public bool? Restored { get; init; }
-
-    [JsonPropertyName("friendly_name")]
-    public string? FriendlyName { get; init; }
-
-    [JsonPropertyName("supported_features")]
-    public double? SupportedFeatures { get; init; }
-
-    [JsonPropertyName("initial")]
-    public object? Initial { get; init; }
-
-    [JsonPropertyName("editable")]
-    public bool? Editable { get; init; }
-
-    [JsonPropertyName("min")]
-    public double? Min { get; init; }
-
-    [JsonPropertyName("max")]
-    public double? Max { get; init; }
-
-    [JsonPropertyName("step")]
-    public double? Step { get; init; }
-
-    [JsonPropertyName("mode")]
-    public string? Mode { get; init; }
-
-    [JsonPropertyName("icon")]
-    public string? Icon { get; init; }
-}
-
 public partial record InputSelectEntity : Entity<InputSelectEntity, EntityState<InputSelectAttributes>, InputSelectAttributes>, IInputSelectEntityCore
 {
     public InputSelectEntity(IHaContext haContext, string entityId) : base(haContext, entityId)
@@ -2506,6 +2452,8 @@ public interface IServices
 
     UpdateServices Update { get; }
 
+    WeatherServices Weather { get; }
+
     YamahaSoundbarServices YamahaSoundbar { get; }
 
     ZoneServices Zone { get; }
@@ -2570,6 +2518,7 @@ public partial class Services : IServices
     public TodoServices Todo => new(_haContext);
     public TtsServices Tts => new(_haContext);
     public UpdateServices Update => new(_haContext);
+    public WeatherServices Weather => new(_haContext);
     public YamahaSoundbarServices YamahaSoundbar => new(_haContext);
     public ZoneServices Zone => new(_haContext);
 }
@@ -11436,6 +11385,51 @@ public partial record UpdateInstallParameters
     public bool? Backup { get; init; }
 }
 
+public partial class WeatherServices
+{
+    private readonly IHaContext _haContext;
+    public WeatherServices(IHaContext haContext)
+    {
+        _haContext = haContext;
+    }
+
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
+    ///<param name="target">The target for this service call</param>
+    public void GetForecasts(ServiceTarget target, WeatherGetForecastsParameters data)
+    {
+        _haContext.CallService("weather", "get_forecasts", target, data);
+    }
+
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
+    ///<param name="type">The scope of the weather forecast.</param>
+    public void GetForecasts(ServiceTarget target, object @type)
+    {
+        _haContext.CallService("weather", "get_forecasts", target, new WeatherGetForecastsParameters { Type = @type });
+    }
+
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
+    ///<param name="target">The target for this service call</param>
+    public Task<JsonElement?> GetForecastsAsync(ServiceTarget target, WeatherGetForecastsParameters data)
+    {
+        return _haContext.CallServiceWithResponseAsync("weather", "get_forecasts", target, data);
+    }
+
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
+    ///<param name="target">The target for this service call</param>
+    ///<param name="type">The scope of the weather forecast.</param>
+    public Task<JsonElement?> GetForecastsAsync(ServiceTarget target, object @type)
+    {
+        return _haContext.CallServiceWithResponseAsync("weather", "get_forecasts", target, new WeatherGetForecastsParameters { Type = @type });
+    }
+}
+
+public partial record WeatherGetForecastsParameters
+{
+    ///<summary>The scope of the weather forecast.</summary>
+    [JsonPropertyName("type")]
+    public object? Type { get; init; }
+}
+
 public partial class YamahaSoundbarServices
 {
     private readonly IHaContext _haContext;
@@ -13737,4 +13731,49 @@ public static class UpdateEntityExtensionMethods
     {
         target.CallService("skip", data);
     }
+}
+
+public static class WeatherEntityExtensionMethods
+{
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
+    public static Task<JsonElement?> GetForecastsAsync(this IWeatherEntityCore target, WeatherGetForecastsParameters data)
+    {
+        return target.CallServiceWithResponseAsync("get_forecasts", data);
+    }
+
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
+    ///<param name="target">The IWeatherEntityCore to call this service for</param>
+    ///<param name="type">The scope of the weather forecast.</param>
+    public static Task<JsonElement?> GetForecastsAsync(this IWeatherEntityCore target, object @type)
+    {
+        return target.CallServiceWithResponseAsync("get_forecasts", new WeatherGetForecastsParameters { Type = @type });
+    }
+
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
+    public static void GetForecasts(this IWeatherEntityCore target, WeatherGetForecastsParameters data)
+    {
+        target.CallService("get_forecasts", data);
+    }
+
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
+    public static void GetForecasts(this IEnumerable<IWeatherEntityCore> target, WeatherGetForecastsParameters data)
+    {
+        target.CallService("get_forecasts", data);
+    }
+
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
+    ///<param name="target">The IWeatherEntityCore to call this service for</param>
+    ///<param name="type">The scope of the weather forecast.</param>
+    public static void GetForecasts(this IWeatherEntityCore target, object @type)
+    {
+        target.CallService("get_forecasts", new WeatherGetForecastsParameters { Type = @type });
+    }
+
+    ///<summary>Retrieves the forecast from selected weather services.</summary>
+    ///<param name="target">The IEnumerable&lt;IWeatherEntityCore&gt; to call this service for</param>
+    ///<param name="type">The scope of the weather forecast.</param>
+    public static void GetForecasts(this IEnumerable<IWeatherEntityCore> target, object @type)
+    {
+        target.CallService("get_forecasts", new WeatherGetForecastsParameters { Type = @type });
+    }
 }
\ No newline at end of file
diff --git a/configurations/homie/modules/home-assistant/netdaemon/deps.json b/configurations/homie/modules/home-assistant/netdaemon/deps.json
index 56ca3951..348f8f75 100644
--- a/configurations/homie/modules/home-assistant/netdaemon/deps.json
+++ b/configurations/homie/modules/home-assistant/netdaemon/deps.json
@@ -196,48 +196,48 @@
   },
   {
     "pname": "NetDaemon.AppModel",
-    "version": "25.18.0",
-    "hash": "sha256-ELPn8JRtSXMg4VH+X/2oUAx0JFXrYraS30YSsy/6XFw="
+    "version": "25.18.1",
+    "hash": "sha256-1cfjbK52djI/ZFnO4Nekrit3XxyXziOjRD/2Bg1dBFQ="
   },
   {
     "pname": "NetDaemon.AppModel.SourceDeployedApps",
-    "version": "25.18.0",
-    "hash": "sha256-pD+AE3y6INFaFBRe3+8HfcjJiP9cnwTpgw/ybL8LIok="
+    "version": "25.18.1",
+    "hash": "sha256-BqFvxJHMWisAKoaoZ3h+hu/6/1vFH3DapuXRTBkTPgw="
   },
   {
     "pname": "NetDaemon.Client",
-    "version": "25.18.0",
-    "hash": "sha256-HbIupYIBvqvlO63wTR36ylGpSjVOYR0+HgQnCDwAow0="
+    "version": "25.18.1",
+    "hash": "sha256-qSfjJraGDdu+oWmopoaYxIVEWsshobg3aK5UO4Iyzfw="
   },
   {
     "pname": "NetDaemon.Extensions.Logging",
-    "version": "25.18.0",
-    "hash": "sha256-aVqKRTM4YcRd2/YpeeE41h0MDjHnF4lEwdRtoY3p4gM="
+    "version": "25.18.1",
+    "hash": "sha256-wuYFqFotZNWsPsRv+lMGAvfnjodC7BHVB0l8WZvcd4g="
   },
   {
     "pname": "NetDaemon.Extensions.Scheduling",
-    "version": "25.18.0",
-    "hash": "sha256-1dgp430stIavTENc3UKljekSVMaeaKVRsXeVuFVLiLk="
+    "version": "25.18.1",
+    "hash": "sha256-i6itPddldpFz8L5HGHZK+LqYTMCk9oq57dgCFXOKaMM="
   },
   {
     "pname": "NetDaemon.Extensions.Tts",
-    "version": "25.18.0",
-    "hash": "sha256-j0VOl8/XNMVoXigQBY6oOcejzPfouZoD9Xt2EmTmEBE="
+    "version": "25.18.1",
+    "hash": "sha256-mrEaeO2SCBsO2XYxk1fz961yfncEL2FqydBuOpIpaZs="
   },
   {
     "pname": "NetDaemon.HassModel",
-    "version": "25.18.0",
-    "hash": "sha256-5m8s4RdBdnWqN9V+GfoPtnQEOoiAmlnuV3AApeBuQH4="
+    "version": "25.18.1",
+    "hash": "sha256-lmA5rK8LPX1sNbKzRRMGwWu1iFPRJo7UI97gOE54VXg="
   },
   {
     "pname": "NetDaemon.HassModel.Integration",
-    "version": "25.18.0",
-    "hash": "sha256-LkNTcwFf7AnsJqa5AA35N4AIn1mn1bjkWmsuQe626eE="
+    "version": "25.18.1",
+    "hash": "sha256-IsFWklSTa4rLi1TuFLoghzzz+g2dtgyfcUTh+zxn+v0="
   },
   {
     "pname": "NetDaemon.Runtime",
-    "version": "25.18.0",
-    "hash": "sha256-ejvr4z+rR5URp/ee6bzqJvqID3kqGsy+dSPgcBvgDLg="
+    "version": "25.18.1",
+    "hash": "sha256-fFiQv9TwKMZTaDWw11wCnnaulCExrK1t8Zy6AHdZJXM="
   },
   {
     "pname": "Serilog",
diff --git a/configurations/homie/modules/home-assistant/netdaemon/images/netdaemon.nix b/configurations/homie/modules/home-assistant/netdaemon/images/netdaemon.nix
index ea234f8a..cc04d1a7 100644
--- a/configurations/homie/modules/home-assistant/netdaemon/images/netdaemon.nix
+++ b/configurations/homie/modules/home-assistant/netdaemon/images/netdaemon.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "netdaemon/netdaemon5";
-  imageDigest = "sha256:52b65e705d49caf56ee54c44b9fed1bee7f7dcfd7e478011ebf914eecfdcaf63";
-  hash = "sha256-nriOzNrbmzI24F/qQGXoGh2U9AC76h2FosY38eNufpM=";
+  imageDigest = "sha256:28335e5f72a9a0c9801e9e46c90157a2a143771b59124bf9d2cc3789e4908986";
+  hash = "sha256-OrSdEWD8fHDkme2TPPmqd/6FyWOMmf4flRNEghJfZnc=";
   finalImageName = imageName;
-  finalImageTag = "25.18.0";
+  finalImageTag = "25.18.1";
 }
diff --git a/configurations/homie/modules/home-assistant/netdaemon/netdaemon.csproj b/configurations/homie/modules/home-assistant/netdaemon/netdaemon.csproj
index 99291d5d..cd480395 100644
--- a/configurations/homie/modules/home-assistant/netdaemon/netdaemon.csproj
+++ b/configurations/homie/modules/home-assistant/netdaemon/netdaemon.csproj
@@ -24,15 +24,15 @@
     </Target>
 
     <ItemGroup>
-        <PackageReference Include="NetDaemon.AppModel" Version="25.18.0" />
-        <PackageReference Include="NetDaemon.AppModel.SourceDeployedApps" Version="25.18.0" />
-        <PackageReference Include="NetDaemon.Runtime" Version="25.18.0" />
-        <PackageReference Include="NetDaemon.HassModel" Version="25.18.0" />
-        <PackageReference Include="NetDaemon.HassModel.Integration" Version="25.18.0" />
-        <PackageReference Include="NetDaemon.Client" Version="25.18.0" />
-        <PackageReference Include="NetDaemon.Extensions.Scheduling" Version="25.18.0" />
-        <PackageReference Include="NetDaemon.Extensions.Logging" Version="25.18.0" />
-        <PackageReference Include="NetDaemon.Extensions.Tts" Version="25.18.0" />
+        <PackageReference Include="NetDaemon.AppModel" Version="25.18.1" />
+        <PackageReference Include="NetDaemon.AppModel.SourceDeployedApps" Version="25.18.1" />
+        <PackageReference Include="NetDaemon.Runtime" Version="25.18.1" />
+        <PackageReference Include="NetDaemon.HassModel" Version="25.18.1" />
+        <PackageReference Include="NetDaemon.HassModel.Integration" Version="25.18.1" />
+        <PackageReference Include="NetDaemon.Client" Version="25.18.1" />
+        <PackageReference Include="NetDaemon.Extensions.Scheduling" Version="25.18.1" />
+        <PackageReference Include="NetDaemon.Extensions.Logging" Version="25.18.1" />
+        <PackageReference Include="NetDaemon.Extensions.Tts" Version="25.18.1" />
         <PackageReference Include="FuzzySharp" Version="2.0.2" />
     </ItemGroup>
 </Project>
diff --git a/configurations/nos/modules/docker/forgejo/images/postgres.nix b/configurations/nos/modules/docker/forgejo/images/postgres.nix
index 793c5fb0..603d995d 100644
--- a/configurations/nos/modules/docker/forgejo/images/postgres.nix
+++ b/configurations/nos/modules/docker/forgejo/images/postgres.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "postgres";
-  imageDigest = "sha256:4836bc848e0d55e582f56d03f0ea89ee03fc33585cf46484f16233151613fd47";
-  hash = "sha256-xMykJYfS05i6YYQeUrsXbOHeMpmmRrYt0L5V2rZ+o6Y=";
+  imageDigest = "sha256:e7e9c0b3470ebff1b693f3a0a3302eb02505e62d67fc1b42c86c2811b4c6e451";
+  hash = "sha256-xtZoNaUY8wUtULhtlrljcqp+zPJ3KZGtE4ielPa/u4s=";
   finalImageName = imageName;
   finalImageTag = "14";
 }
diff --git a/configurations/nos/modules/docker/freshrss/images/postgres.nix b/configurations/nos/modules/docker/freshrss/images/postgres.nix
index 793c5fb0..603d995d 100644
--- a/configurations/nos/modules/docker/freshrss/images/postgres.nix
+++ b/configurations/nos/modules/docker/freshrss/images/postgres.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "postgres";
-  imageDigest = "sha256:4836bc848e0d55e582f56d03f0ea89ee03fc33585cf46484f16233151613fd47";
-  hash = "sha256-xMykJYfS05i6YYQeUrsXbOHeMpmmRrYt0L5V2rZ+o6Y=";
+  imageDigest = "sha256:e7e9c0b3470ebff1b693f3a0a3302eb02505e62d67fc1b42c86c2811b4c6e451";
+  hash = "sha256-xtZoNaUY8wUtULhtlrljcqp+zPJ3KZGtE4ielPa/u4s=";
   finalImageName = imageName;
   finalImageTag = "14";
 }
diff --git a/configurations/nos/modules/docker/freshrss/images/rss-bridge.nix b/configurations/nos/modules/docker/freshrss/images/rss-bridge.nix
index 5f187b7a..4c1863a8 100644
--- a/configurations/nos/modules/docker/freshrss/images/rss-bridge.nix
+++ b/configurations/nos/modules/docker/freshrss/images/rss-bridge.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "rssbridge/rss-bridge";
-  imageDigest = "sha256:8e031d8dfa73601ff60696a4952b6c30a00018a1a4bc32f5b2a8bad109e09857";
-  hash = "sha256-PzY9zwTLe+ga9JsZNI1knKylYw+sk89eDruSDBrqyfk=";
+  imageDigest = "sha256:eea4469cd57e660e3bea8f29a51aeb66f05badb47b85d8b539a1011df2fde49a";
+  hash = "sha256-foZJtjvhEwxsvYMaEniS4OUA6ou9led9x4z8j4yvk88=";
   finalImageName = imageName;
   finalImageTag = "latest";
 }
diff --git a/configurations/nos/modules/docker/media/sonarr/images/sonarr.nix b/configurations/nos/modules/docker/media/sonarr/images/sonarr.nix
index 3ae027a3..c456750a 100644
--- a/configurations/nos/modules/docker/media/sonarr/images/sonarr.nix
+++ b/configurations/nos/modules/docker/media/sonarr/images/sonarr.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "ghcr.io/linuxserver/sonarr";
-  imageDigest = "sha256:5581b2188f11ea6693e0dfe3f3c3198bb605b78088ec685ad579a5a308cc0d5d";
-  hash = "sha256-kMdxcaHL9jp0VkSTNwJ3JuRXopNqr/76klTEf0gdDMM=";
+  imageDigest = "sha256:bae1b72ad55cee030a416aaaef1f20eee076e4c1c6d490689904d4609a2cabac";
+  hash = "sha256-x5/G+VrJxaLoWEpSStwyOupw3B0PnIedcRQ33k5sm+s=";
   finalImageName = imageName;
   finalImageTag = "latest";
 }
diff --git a/configurations/nos/modules/docker/nextcloud/images/nextcloud.nix b/configurations/nos/modules/docker/nextcloud/images/nextcloud.nix
index 68fd0768..c3e1f12c 100644
--- a/configurations/nos/modules/docker/nextcloud/images/nextcloud.nix
+++ b/configurations/nos/modules/docker/nextcloud/images/nextcloud.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "nextcloud";
-  imageDigest = "sha256:d6e30ce91a6c34c18c0822f83c4a16e90da750e04fd5f521ecf73ef580c0d59b";
-  hash = "sha256-ib+N6Gc/8L5LOlINou+A1MT6842tDBrcH4tjUPp4jXQ=";
+  imageDigest = "sha256:21468f5acb6d66b5abb0b78192e94a03ba1aef2ca0303f3800226363c0ee7cda";
+  hash = "sha256-+0OcAbdyqCP3YT718Nr7r6EpxyrDOHGj3S6uGLI1q78=";
   finalImageName = imageName;
   finalImageTag = "fpm";
 }
diff --git a/configurations/nos/modules/docker/resume/images/postgres.nix b/configurations/nos/modules/docker/resume/images/postgres.nix
index dbe28bc7..fa8828c2 100644
--- a/configurations/nos/modules/docker/resume/images/postgres.nix
+++ b/configurations/nos/modules/docker/resume/images/postgres.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "postgres";
-  imageDigest = "sha256:ef9d1517df69c4d27dbb9ddcec14f431a2442628603f4e9daa429b92ae6c3cd1";
-  hash = "sha256-qrYC2YmySd6lNiw2fsd3MFf5npg4/xgkyiT/Ty3g4ZE=";
+  imageDigest = "sha256:5402d0a13eab398c7c38f1b90af081d7f9e5977606ed869cecdb661403f6586a";
+  hash = "sha256-jxlKKWWubnN2AskHltA73d19IMCdaJgWJsq0fItPUBA=";
   finalImageName = imageName;
   finalImageTag = "15-alpine";
 }
diff --git a/flake.lock b/flake.lock
index 88cc2cc4..e414140b 100644
--- a/flake.lock
+++ b/flake.lock
@@ -155,11 +155,11 @@
     "custom-sidebar-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1746645385,
-        "narHash": "sha256-KMWjpCQgSRODWL0asUqmEBy5UgxFatD8s2T4bn/Qbpw=",
+        "lastModified": 1746889342,
+        "narHash": "sha256-KRk4f1cGugBYyQDdkZmuMRy0Oim23xAe7hrZPeKERbs=",
         "owner": "elchininet",
         "repo": "custom-sidebar",
-        "rev": "7f87bed154f87f4bee1f3d6f6e83453c8c1d6dfe",
+        "rev": "7738c98d8d143a6269b8bfcc411ada598df1f24d",
         "type": "github"
       },
       "original": {
@@ -226,11 +226,11 @@
     "eisa-scripts-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1746650366,
-        "narHash": "sha256-P4leX7FTg39JhcfE9bOqVxH4UIyF7f3HNe+9a7a+POs=",
+        "lastModified": 1746820082,
+        "narHash": "sha256-6elW+xTJ4zGdnPm8w93spRPTTATueOOUBD2H4/uO4Tk=",
         "owner": "Eisa01",
         "repo": "mpv-scripts",
-        "rev": "4701419f9b9063a5425f3942ec62cc029599430d",
+        "rev": "ad827ec9f530479650726a895220f44316e42880",
         "type": "github"
       },
       "original": {
@@ -270,6 +270,22 @@
         "type": "github"
       }
     },
+    "flake-compat_2": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1696426674,
+        "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
+        "type": "github"
+      },
+      "original": {
+        "owner": "edolstra",
+        "repo": "flake-compat",
+        "type": "github"
+      }
+    },
     "flake-parts": {
       "inputs": {
         "nixpkgs-lib": [
@@ -385,11 +401,11 @@
     "gpu-screen-recorder-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1746446410,
-        "narHash": "sha256-YqkndG6N4Xi1S+lRUp5wKQ7MaVNHElxoiIcZ8Z82voQ=",
+        "lastModified": 1746906674,
+        "narHash": "sha256-D3MYGAP2YkLKOk76KXIXIRxU+yTi4mgbERFnbu1o7Kw=",
         "ref": "refs/heads/master",
-        "rev": "811a14481dbd75fe2c2a072517e06add336fee4f",
-        "revCount": 1088,
+        "rev": "085d4632d26d09070c3e80a2fc03fd283b9d3e19",
+        "revCount": 1094,
         "type": "git",
         "url": "https://repo.dec05eba.com/gpu-screen-recorder"
       },
@@ -444,11 +460,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1746710194,
-        "narHash": "sha256-r2zE8+rWZieU05LMKixeU5SsMy9I4truiTPKchTPNaw=",
+        "lastModified": 1746912617,
+        "narHash": "sha256-SSw/98B3Htw7iJWCyq08fAEL5w+a/Vj+YbQq0msVFTA=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "cea975d46d08293eae3ad0d9f16207f1ce2dfc81",
+        "rev": "9ef92f1c6b77944198fd368ec805ced842352a1d",
         "type": "github"
       },
       "original": {
@@ -560,11 +576,11 @@
         "xdph": "xdph"
       },
       "locked": {
-        "lastModified": 1746655655,
-        "narHash": "sha256-hPMsUK1r3Cxx8KoCZVaYJH5ThDT5VRUDMMFmyVei1Eo=",
+        "lastModified": 1746917585,
+        "narHash": "sha256-+TiSJvQN/LvXnwY9FebiVfabiV4ay6uHq9WK8NcQxuA=",
         "owner": "hyprwm",
         "repo": "Hyprland",
-        "rev": "22b12e3013adf66b462b174688f82bd53ba8e721",
+        "rev": "9a87498bb1cb923dec04807fb3fb1f66bd2c2580",
         "type": "github"
       },
       "original": {
@@ -586,11 +602,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1746644153,
-        "narHash": "sha256-GpsLyK/U05q7QnyFIWrnGS2loVyjPZByTtPitwu9UNw=",
+        "lastModified": 1746806942,
+        "narHash": "sha256-fziL5ORI599D6Wp+BKlspxOqZ1HhCCLkq4C4FBwIwJo=",
         "owner": "hyprwm",
         "repo": "hyprland-plugins",
-        "rev": "c25ee86113d99ec9188d218442f7e93ee62aef27",
+        "rev": "c491d2831448645f24a1597a17f564aa52691ac6",
         "type": "github"
       },
       "original": {
@@ -708,11 +724,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1746637914,
-        "narHash": "sha256-YRYeG+Zp7dQKYBtyOv15vXzLfguinmUm6LNzq5cCEkc=",
+        "lastModified": 1746655412,
+        "narHash": "sha256-kVQ0bHVtX6baYxRWWIh4u3LNJZb9Zcm2xBeDPOGz5BY=",
         "owner": "hyprwm",
         "repo": "hyprlang",
-        "rev": "e863ebcee936dd57f360cca4fec0220da19c5b2d",
+        "rev": "557241780c179cf7ef224df392f8e67dab6cef83",
         "type": "github"
       },
       "original": {
@@ -747,11 +763,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1746559093,
-        "narHash": "sha256-Q5gDH48MqkiglGvRtD0Uj653kYzu46j27JIB0h1ecEg=",
+        "lastModified": 1746738843,
+        "narHash": "sha256-qe4OwoBal5fYoTDV8psE+1jAG8Qv5lJDfWqS/4hEHPU=",
         "owner": "hyprwm",
         "repo": "hyprpaper",
-        "rev": "753ffa7fe9b6211609c263e38e09ae663a762b56",
+        "rev": "99213a1854d172c529e815834e5b43dab95a3b67",
         "type": "github"
       },
       "original": {
@@ -835,6 +851,7 @@
     },
     "kapowarr": {
       "inputs": {
+        "libgencomics": "libgencomics",
         "nixpkgs": [
           "nixpkgs"
         ],
@@ -843,11 +860,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1745876623,
-        "narHash": "sha256-tF9OaIvs/RfzCHaRoECXNCsps2qrm4OB4zgftdjZPfg=",
+        "lastModified": 1746841609,
+        "narHash": "sha256-QJveAQmbWzlrXsz29dXClt+vBfcq+zZVwNVceejTZh4=",
         "owner": "matt1432",
         "repo": "Kapowarr",
-        "rev": "fc148c1b4e835c578289c8c47b91c44d9d3487f2",
+        "rev": "c8658519ff71252900380c05c72cd6beb1f1c8b6",
         "type": "github"
       },
       "original": {
@@ -904,14 +921,40 @@
         "type": "github"
       }
     },
+    "libgencomics": {
+      "inputs": {
+        "nixpkgs": [
+          "kapowarr",
+          "nixpkgs"
+        ],
+        "systems": [
+          "kapowarr",
+          "systems"
+        ],
+        "treefmt-nix": "treefmt-nix"
+      },
+      "locked": {
+        "lastModified": 1746825679,
+        "narHash": "sha256-GQPHVbegJIyIPsJSaUAu1iqpzAB62BoDidLvXozRZA8=",
+        "owner": "matt1432",
+        "repo": "LibgenComics",
+        "rev": "1cff790e63baed494936b6ef0ea5a8dc9f75d76e",
+        "type": "github"
+      },
+      "original": {
+        "owner": "matt1432",
+        "repo": "LibgenComics",
+        "type": "github"
+      }
+    },
     "libratbag-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1746687150,
-        "narHash": "sha256-aZd+YCbGPxyoQAVh8nE8WzHklhrpsUgSs7PbZAgLpMU=",
+        "lastModified": 1746874781,
+        "narHash": "sha256-WoCqPzNV6RLarVuUXd461ZHQrcxZCQFb6n2VcKgD4eo=",
         "owner": "libratbag",
         "repo": "libratbag",
-        "rev": "ad6540e39bdbf029fc24126200cdf0c5f0b00e7c",
+        "rev": "65d07ae4d11a6985f445d547ac6d008b6d7f5a35",
         "type": "github"
       },
       "original": {
@@ -920,14 +963,36 @@
         "type": "github"
       }
     },
+    "lix": {
+      "inputs": {
+        "flake-compat": "flake-compat_2",
+        "nix2container": "nix2container",
+        "nixpkgs": "nixpkgs",
+        "nixpkgs-regression": "nixpkgs-regression",
+        "pre-commit-hooks": "pre-commit-hooks"
+      },
+      "locked": {
+        "lastModified": 1737234286,
+        "narHash": "sha256-CCKIAE84dzkrnlxJCKFyffAxP3yfsOAbdvydUGqq24g=",
+        "rev": "2837da71ec1588c1187d2e554719b15904a46c8b",
+        "revCount": 16631,
+        "type": "git",
+        "url": "https://git.lix.systems/lix-project/lix"
+      },
+      "original": {
+        "rev": "2837da71ec1588c1187d2e554719b15904a46c8b",
+        "type": "git",
+        "url": "https://git.lix.systems/lix-project/lix"
+      }
+    },
     "material-symbols-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1744619244,
-        "narHash": "sha256-73JYyqWMbLHu6xC9YI12vWGF4lZ8Gbq7YZGIkGyIe9I=",
+        "lastModified": 1746806368,
+        "narHash": "sha256-ph/3haj1lfq0aOwXh6sXRt6YOC2RforP90PiZe4Hch4=",
         "owner": "beecho01",
         "repo": "material-symbols",
-        "rev": "1922a4cf6a0b4dff309c3763fb5a784ff0632fb1",
+        "rev": "e448eda274c537a5ae3c143221f089d4790ea892",
         "type": "github"
       },
       "original": {
@@ -1047,11 +1112,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1746705602,
-        "narHash": "sha256-IJZaGco28YI4IF7gErOyWxZGZ9sLxrbAHBAbV1q3GXw=",
+        "lastModified": 1746889600,
+        "narHash": "sha256-I82pvD0mdInsQTFA7SisvmJAusgdp8hJXLFBVd73URw=",
         "owner": "viperML",
         "repo": "nh",
-        "rev": "d36ff531d2e0503dce3ac8a6ec5915d2dd2a3a54",
+        "rev": "9bbd96385f5534ccc2ba7f0b3c29192d7f0eb68c",
         "type": "github"
       },
       "original": {
@@ -1119,11 +1184,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1746689206,
-        "narHash": "sha256-flpLC9bSI7ylfy8hI9gGleG0gt3wtYYFKdJz+Qj6xlA=",
+        "lastModified": 1746887075,
+        "narHash": "sha256-44GrKkww1p4XOANN2WpXonMsnP8+SPi4wrvERWCSb7g=",
         "owner": "Mic92",
         "repo": "nix-fast-build",
-        "rev": "38eecfc45d91aa1e00a740ab39bbd9d33ba5835a",
+        "rev": "a803b722190a857768b06b4a804aee53c26ee49b",
         "type": "github"
       },
       "original": {
@@ -1253,6 +1318,7 @@
         "flake-compat": [
           "flake-compat"
         ],
+        "lix": "lix",
         "nixpkgs": [
           "nixpkgs"
         ],
@@ -1261,11 +1327,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1744237690,
-        "narHash": "sha256-DEEAPq5whEQv4Pt5JjBWd2YN4B4cr+RXBzp7mTcvZfU=",
+        "lastModified": 1746904788,
+        "narHash": "sha256-9ZssgGwiihWtwsPCNx31lH8Be8QH/gz/fMTXL/gyCvg=",
         "owner": "aristanetworks",
         "repo": "nix-serve-ng",
-        "rev": "101b4a552f3651f5ad8ac8185c6d9c0159e543b9",
+        "rev": "d1b8a9a02f3ac0c7e0050e0daf039c5c069c76fb",
         "type": "github"
       },
       "original": {
@@ -1274,6 +1340,22 @@
         "type": "github"
       }
     },
+    "nix2container": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1724996935,
+        "narHash": "sha256-njRK9vvZ1JJsP8oV2OgkBrpJhgQezI03S7gzskCcHos=",
+        "owner": "nlewo",
+        "repo": "nix2container",
+        "rev": "fa6bb0a1159f55d071ba99331355955ae30b3401",
+        "type": "github"
+      },
+      "original": {
+        "owner": "nlewo",
+        "repo": "nix2container",
+        "type": "github"
+      }
+    },
     "nixcord": {
       "inputs": {
         "flake-compat": [
@@ -1290,11 +1372,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1746582033,
-        "narHash": "sha256-6ceLz0KhobCrfXHbmV038/NDD61jS5qEEvI1EZDOUog=",
+        "lastModified": 1746815338,
+        "narHash": "sha256-2M1JzogleVnHmt1RtNGwBRg6y6lLloVdNSu6v7qyrIw=",
         "owner": "kaylorben",
         "repo": "nixcord",
-        "rev": "6f6181a8e5019c338dc5f6d22ac7e18b2700e898",
+        "rev": "471817830e794440f725d4ed698a5442e75b55ad",
         "type": "github"
       },
       "original": {
@@ -1317,11 +1399,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1746347862,
-        "narHash": "sha256-ZYWReI0/q3Qc9IsKqgyi1xQj0yVEYexhfVkRbMkrROI=",
+        "lastModified": 1746819513,
+        "narHash": "sha256-I2lVMt3PS8etmeHzSFi4kvx5Qhj/QQbmo05jYvnrY9U=",
         "owner": "nix-community",
         "repo": "nixd",
-        "rev": "ec9d9968cb9da694eb5e5093e68463b888d7d0f1",
+        "rev": "2b61bcd9bd850952361ff567547fd78a6b1841e6",
         "type": "github"
       },
       "original": {
@@ -1355,19 +1437,18 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1746461020,
-        "narHash": "sha256-7+pG1I9jvxNlmln4YgnlW4o+w0TZX24k688mibiFDUE=",
-        "ref": "nixos-unstable",
-        "rev": "3730d8a308f94996a9ba7c7138ede69c1b9ac4ae",
-        "shallow": true,
-        "type": "git",
-        "url": "https://github.com/NixOS/nixpkgs"
+        "lastModified": 1733348545,
+        "narHash": "sha256-b4JrUmqT0vFNx42aEN9LTWOHomkTKL/ayLopflVf81U=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "9ecb50d2fae8680be74c08bb0a995c5383747f89",
+        "type": "github"
       },
       "original": {
-        "ref": "nixos-unstable",
-        "shallow": true,
-        "type": "git",
-        "url": "https://github.com/NixOS/nixpkgs"
+        "owner": "NixOS",
+        "ref": "nixos-24.11-small",
+        "repo": "nixpkgs",
+        "type": "github"
       }
     },
     "nixpkgs-docs": {
@@ -1417,6 +1498,39 @@
         "type": "github"
       }
     },
+    "nixpkgs-regression": {
+      "locked": {
+        "lastModified": 1643052045,
+        "narHash": "sha256-uGJ0VXIhWKGXxkeNnq4TvV3CIOkUJ3PAoLZ3HMzNVMw=",
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
+        "type": "github"
+      },
+      "original": {
+        "owner": "NixOS",
+        "repo": "nixpkgs",
+        "rev": "215d4d0fd80ca5163643b03a33fde804a29cc1e2",
+        "type": "github"
+      }
+    },
+    "nixpkgs_2": {
+      "locked": {
+        "lastModified": 1746663147,
+        "narHash": "sha256-Ua0drDHawlzNqJnclTJGf87dBmaO/tn7iZ+TCkTRpRc=",
+        "ref": "nixos-unstable",
+        "rev": "dda3dcd3fe03e991015e9a74b22d35950f264a54",
+        "shallow": true,
+        "type": "git",
+        "url": "https://github.com/NixOS/nixpkgs"
+      },
+      "original": {
+        "ref": "nixos-unstable",
+        "shallow": true,
+        "type": "git",
+        "url": "https://github.com/NixOS/nixpkgs"
+      }
+    },
     "nmd": {
       "inputs": {
         "nixpkgs": [
@@ -1567,6 +1681,22 @@
       }
     },
     "pre-commit-hooks": {
+      "flake": false,
+      "locked": {
+        "lastModified": 1733318908,
+        "narHash": "sha256-SVQVsbafSM1dJ4fpgyBqLZ+Lft+jcQuMtEL3lQWx2Sk=",
+        "owner": "cachix",
+        "repo": "git-hooks.nix",
+        "rev": "6f4e2a2112050951a314d2733a994fbab94864c6",
+        "type": "github"
+      },
+      "original": {
+        "owner": "cachix",
+        "repo": "git-hooks.nix",
+        "type": "github"
+      }
+    },
+    "pre-commit-hooks_2": {
       "inputs": {
         "flake-compat": [
           "flake-compat"
@@ -1660,14 +1790,14 @@
         "nixcord": "nixcord",
         "nixd": "nixd",
         "nixos-jellyfin": "nixos-jellyfin",
-        "nixpkgs": "nixpkgs",
+        "nixpkgs": "nixpkgs_2",
         "nurl": "nurl",
         "nvim-theme-src": "nvim-theme-src",
         "pcsd": "pcsd",
         "piper-src": "piper-src",
         "pokemon-colorscripts-src": "pokemon-colorscripts-src",
         "pr-tracker": "pr-tracker",
-        "pre-commit-hooks": "pre-commit-hooks",
+        "pre-commit-hooks": "pre-commit-hooks_2",
         "quickshell": "quickshell",
         "secrets": "secrets",
         "sioyek-theme-src": "sioyek-theme-src",
@@ -1677,7 +1807,7 @@
         "spotifywebapi-src": "spotifywebapi-src",
         "subscleaner-src": "subscleaner-src",
         "systems": "systems",
-        "treefmt-nix": "treefmt-nix",
+        "treefmt-nix": "treefmt-nix_2",
         "ts-for-gir-src": "ts-for-gir-src",
         "tuya-local-src": "tuya-local-src",
         "vimplugin-easytables-src": "vimplugin-easytables-src",
@@ -1714,11 +1844,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1745173940,
-        "narHash": "sha256-y/4ddSnVOPIIPX64/AufY+I/2l2OtTW1aq8tThXrJME=",
+        "lastModified": 1746919476,
+        "narHash": "sha256-3o0OyCoila/0jKAz8NSB7pY4zpOJZ7teBoQnHZF5Zqg=",
         "ref": "refs/heads/main",
-        "rev": "8dabce58753a5f7e0733285dcbbb8062d3a83ae1",
-        "revCount": 97,
+        "rev": "6d066eafc7f751adb063f1910b8c5009774dc3ff",
+        "revCount": 98,
         "type": "git",
         "url": "ssh://git@git.nelim.org/matt1432/nixos-secrets"
       },
@@ -1782,11 +1912,11 @@
     "spotifyplus-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1746410021,
-        "narHash": "sha256-0SHFbErNWhqJrvLymkw9x9d1XegrpI7LhwVUrjdoEMc=",
+        "lastModified": 1746734709,
+        "narHash": "sha256-Bc59UeaTRJ4qRZWsUEqScVVe5DLFLYLZft0HUnXJpj8=",
         "owner": "thlucas1",
         "repo": "homeassistantcomponent_spotifyplus",
-        "rev": "2b3a144ce32d0edc4356823e96d05f6a249ba3ba",
+        "rev": "0ae998d9ab5f51af8567176017ca04b3bcb5a331",
         "type": "github"
       },
       "original": {
@@ -1798,11 +1928,11 @@
     "spotifywebapi-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1746714845,
-        "narHash": "sha256-tuwttRBofyIeE/A6wistw0D5LX4xVWbEySdGst4Mhyw=",
+        "lastModified": 1746734572,
+        "narHash": "sha256-Ciy1CJ5/WxWQn6X1dwut55Ohtf7EpQxkhJih23+caWU=",
         "owner": "thlucas1",
         "repo": "SpotifyWebApiPython",
-        "rev": "093e81f31aac4f349676866561a0620b507735ed",
+        "rev": "8dd5836f8ef7239c5b8aaa17c24c7c01468267d8",
         "type": "github"
       },
       "original": {
@@ -1843,6 +1973,28 @@
       }
     },
     "treefmt-nix": {
+      "inputs": {
+        "nixpkgs": [
+          "kapowarr",
+          "libgencomics",
+          "nixpkgs"
+        ]
+      },
+      "locked": {
+        "lastModified": 1746216483,
+        "narHash": "sha256-4h3s1L/kKqt3gMDcVfN8/4v2jqHrgLIe4qok4ApH5x4=",
+        "owner": "numtide",
+        "repo": "treefmt-nix",
+        "rev": "29ec5026372e0dec56f890e50dbe4f45930320fd",
+        "type": "github"
+      },
+      "original": {
+        "owner": "numtide",
+        "repo": "treefmt-nix",
+        "type": "github"
+      }
+    },
+    "treefmt-nix_2": {
       "inputs": {
         "nixpkgs": [
           "nixpkgs"
@@ -1881,11 +2033,11 @@
     "tuya-local-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1746589192,
-        "narHash": "sha256-7yLX4XR8f0VGdI/OfooYJ+3o3sQKUdrHLz/GpKHayFw=",
+        "lastModified": 1746876413,
+        "narHash": "sha256-PPZZq7tNkB746LUHJze6ciX5mzd5cgMa2yoDUScfnsI=",
         "owner": "make-all",
         "repo": "tuya-local",
-        "rev": "8cf9cce17f58d72695362982e52a990b5449f979",
+        "rev": "9f3c408bb5c19e563122e3da0b6a662fffeefb61",
         "type": "github"
       },
       "original": {
diff --git a/lib/pkgs/mk-types/default.nix b/lib/pkgs/mk-types/default.nix
index 0824cc02..1c79d68b 100644
--- a/lib/pkgs/mk-types/default.nix
+++ b/lib/pkgs/mk-types/default.nix
@@ -21,7 +21,7 @@ in
     pname = "${pname}-types";
     version = "0.0.0";
 
-    npmDepsHash = "sha256-OBhhXNloM0cpAapEseN+f2E/oHgZitRM4UdiDITS/ME=";
+    npmDepsHash = "sha256-EcmWjImYFNXbo1KqzRen2tRXxiAu9KswKY3ZI4YGn9s=";
 
     src = ./.;
     dontNpmBuild = true;
diff --git a/lib/pkgs/mk-types/package-lock.json b/lib/pkgs/mk-types/package-lock.json
index aa162db3..998a1139 100644
--- a/lib/pkgs/mk-types/package-lock.json
+++ b/lib/pkgs/mk-types/package-lock.json
@@ -44,12 +44,12 @@
             }
         },
         "node_modules/@inquirer/checkbox": {
-            "version": "4.1.5",
-            "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.5.tgz",
-            "integrity": "sha512-swPczVU+at65xa5uPfNP9u3qx/alNwiaykiI/ExpsmMSQW55trmZcwhYWzw/7fj+n6Q8z1eENvR7vFfq9oPSAQ==",
+            "version": "4.1.6",
+            "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.1.6.tgz",
+            "integrity": "sha512-62u896rWCtKKE43soodq5e/QcRsA22I+7/4Ov7LESWnKRO6BVo2A1DFLDmXL9e28TB0CfHc3YtkbPm7iwajqkg==",
             "license": "MIT",
             "dependencies": {
-                "@inquirer/core": "^10.1.10",
+                "@inquirer/core": "^10.1.11",
                 "@inquirer/figures": "^1.0.11",
                 "@inquirer/type": "^3.0.6",
                 "ansi-escapes": "^4.3.2",
@@ -68,12 +68,12 @@
             }
         },
         "node_modules/@inquirer/confirm": {
-            "version": "5.1.9",
-            "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.9.tgz",
-            "integrity": "sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==",
+            "version": "5.1.10",
+            "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.10.tgz",
+            "integrity": "sha512-FxbQ9giWxUWKUk2O5XZ6PduVnH2CZ/fmMKMBkH71MHJvWr7WL5AHKevhzF1L5uYWB2P548o1RzVxrNd3dpmk6g==",
             "license": "MIT",
             "dependencies": {
-                "@inquirer/core": "^10.1.10",
+                "@inquirer/core": "^10.1.11",
                 "@inquirer/type": "^3.0.6"
             },
             "engines": {
@@ -89,9 +89,9 @@
             }
         },
         "node_modules/@inquirer/core": {
-            "version": "10.1.10",
-            "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.10.tgz",
-            "integrity": "sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==",
+            "version": "10.1.11",
+            "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.11.tgz",
+            "integrity": "sha512-BXwI/MCqdtAhzNQlBEFE7CEflhPkl/BqvAuV/aK6lW3DClIfYVDWPP/kXuXHtBWC7/EEbNqd/1BGq2BGBBnuxw==",
             "license": "MIT",
             "dependencies": {
                 "@inquirer/figures": "^1.0.11",
@@ -116,12 +116,12 @@
             }
         },
         "node_modules/@inquirer/editor": {
-            "version": "4.2.10",
-            "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.10.tgz",
-            "integrity": "sha512-5GVWJ+qeI6BzR6TIInLP9SXhWCEcvgFQYmcRG6d6RIlhFjM5TyG18paTGBgRYyEouvCmzeco47x9zX9tQEofkw==",
+            "version": "4.2.11",
+            "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.11.tgz",
+            "integrity": "sha512-YoZr0lBnnLFPpfPSNsQ8IZyKxU47zPyVi9NLjCWtna52//M/xuL0PGPAxHxxYhdOhnvY2oBafoM+BI5w/JK7jw==",
             "license": "MIT",
             "dependencies": {
-                "@inquirer/core": "^10.1.10",
+                "@inquirer/core": "^10.1.11",
                 "@inquirer/type": "^3.0.6",
                 "external-editor": "^3.1.0"
             },
@@ -138,12 +138,12 @@
             }
         },
         "node_modules/@inquirer/expand": {
-            "version": "4.0.12",
-            "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.12.tgz",
-            "integrity": "sha512-jV8QoZE1fC0vPe6TnsOfig+qwu7Iza1pkXoUJ3SroRagrt2hxiL+RbM432YAihNR7m7XnU0HWl/WQ35RIGmXHw==",
+            "version": "4.0.13",
+            "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.13.tgz",
+            "integrity": "sha512-HgYNWuZLHX6q5y4hqKhwyytqAghmx35xikOGY3TcgNiElqXGPas24+UzNPOwGUZa5Dn32y25xJqVeUcGlTv+QQ==",
             "license": "MIT",
             "dependencies": {
-                "@inquirer/core": "^10.1.10",
+                "@inquirer/core": "^10.1.11",
                 "@inquirer/type": "^3.0.6",
                 "yoctocolors-cjs": "^2.1.2"
             },
@@ -169,12 +169,12 @@
             }
         },
         "node_modules/@inquirer/input": {
-            "version": "4.1.9",
-            "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.9.tgz",
-            "integrity": "sha512-mshNG24Ij5KqsQtOZMgj5TwEjIf+F2HOESk6bjMwGWgcH5UBe8UoljwzNFHqdMbGYbgAf6v2wU/X9CAdKJzgOA==",
+            "version": "4.1.10",
+            "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.1.10.tgz",
+            "integrity": "sha512-kV3BVne3wJ+j6reYQUZi/UN9NZGZLxgc/tfyjeK3mrx1QI7RXPxGp21IUTv+iVHcbP4ytZALF8vCHoxyNSC6qg==",
             "license": "MIT",
             "dependencies": {
-                "@inquirer/core": "^10.1.10",
+                "@inquirer/core": "^10.1.11",
                 "@inquirer/type": "^3.0.6"
             },
             "engines": {
@@ -190,12 +190,12 @@
             }
         },
         "node_modules/@inquirer/number": {
-            "version": "3.0.12",
-            "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.12.tgz",
-            "integrity": "sha512-7HRFHxbPCA4e4jMxTQglHJwP+v/kpFsCf2szzfBHy98Wlc3L08HL76UDiA87TOdX5fwj2HMOLWqRWv9Pnn+Z5Q==",
+            "version": "3.0.13",
+            "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.13.tgz",
+            "integrity": "sha512-IrLezcg/GWKS8zpKDvnJ/YTflNJdG0qSFlUM/zNFsdi4UKW/CO+gaJpbMgQ20Q58vNKDJbEzC6IebdkprwL6ew==",
             "license": "MIT",
             "dependencies": {
-                "@inquirer/core": "^10.1.10",
+                "@inquirer/core": "^10.1.11",
                 "@inquirer/type": "^3.0.6"
             },
             "engines": {
@@ -211,12 +211,12 @@
             }
         },
         "node_modules/@inquirer/password": {
-            "version": "4.0.12",
-            "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.12.tgz",
-            "integrity": "sha512-FlOB0zvuELPEbnBYiPaOdJIaDzb2PmJ7ghi/SVwIHDDSQ2K4opGBkF+5kXOg6ucrtSUQdLhVVY5tycH0j0l+0g==",
+            "version": "4.0.13",
+            "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.13.tgz",
+            "integrity": "sha512-NN0S/SmdhakqOTJhDwOpeBEEr8VdcYsjmZHDb0rblSh2FcbXQOr+2IApP7JG4WE3sxIdKytDn4ed3XYwtHxmJQ==",
             "license": "MIT",
             "dependencies": {
-                "@inquirer/core": "^10.1.10",
+                "@inquirer/core": "^10.1.11",
                 "@inquirer/type": "^3.0.6",
                 "ansi-escapes": "^4.3.2"
             },
@@ -233,21 +233,21 @@
             }
         },
         "node_modules/@inquirer/prompts": {
-            "version": "7.5.0",
-            "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.5.0.tgz",
-            "integrity": "sha512-tk8Bx7l5AX/CR0sVfGj3Xg6v7cYlFBkEahH+EgBB+cZib6Fc83dwerTbzj7f2+qKckjIUGsviWRI1d7lx6nqQA==",
+            "version": "7.5.1",
+            "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.5.1.tgz",
+            "integrity": "sha512-5AOrZPf2/GxZ+SDRZ5WFplCA2TAQgK3OYrXCYmJL5NaTu4ECcoWFlfUZuw7Es++6Njv7iu/8vpYJhuzxUH76Vg==",
             "license": "MIT",
             "dependencies": {
-                "@inquirer/checkbox": "^4.1.5",
-                "@inquirer/confirm": "^5.1.9",
-                "@inquirer/editor": "^4.2.10",
-                "@inquirer/expand": "^4.0.12",
-                "@inquirer/input": "^4.1.9",
-                "@inquirer/number": "^3.0.12",
-                "@inquirer/password": "^4.0.12",
-                "@inquirer/rawlist": "^4.1.0",
-                "@inquirer/search": "^3.0.12",
-                "@inquirer/select": "^4.2.0"
+                "@inquirer/checkbox": "^4.1.6",
+                "@inquirer/confirm": "^5.1.10",
+                "@inquirer/editor": "^4.2.11",
+                "@inquirer/expand": "^4.0.13",
+                "@inquirer/input": "^4.1.10",
+                "@inquirer/number": "^3.0.13",
+                "@inquirer/password": "^4.0.13",
+                "@inquirer/rawlist": "^4.1.1",
+                "@inquirer/search": "^3.0.13",
+                "@inquirer/select": "^4.2.1"
             },
             "engines": {
                 "node": ">=18"
@@ -262,12 +262,12 @@
             }
         },
         "node_modules/@inquirer/rawlist": {
-            "version": "4.1.0",
-            "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.0.tgz",
-            "integrity": "sha512-6ob45Oh9pXmfprKqUiEeMz/tjtVTFQTgDDz1xAMKMrIvyrYjAmRbQZjMJfsictlL4phgjLhdLu27IkHNnNjB7g==",
+            "version": "4.1.1",
+            "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.1.tgz",
+            "integrity": "sha512-VBUC0jPN2oaOq8+krwpo/mf3n/UryDUkKog3zi+oIi8/e5hykvdntgHUB9nhDM78RubiyR1ldIOfm5ue+2DeaQ==",
             "license": "MIT",
             "dependencies": {
-                "@inquirer/core": "^10.1.10",
+                "@inquirer/core": "^10.1.11",
                 "@inquirer/type": "^3.0.6",
                 "yoctocolors-cjs": "^2.1.2"
             },
@@ -284,12 +284,12 @@
             }
         },
         "node_modules/@inquirer/search": {
-            "version": "3.0.12",
-            "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.12.tgz",
-            "integrity": "sha512-H/kDJA3kNlnNIjB8YsaXoQI0Qccgf0Na14K1h8ExWhNmUg2E941dyFPrZeugihEa9AZNW5NdsD/NcvUME83OPQ==",
+            "version": "3.0.13",
+            "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.13.tgz",
+            "integrity": "sha512-9g89d2c5Izok/Gw/U7KPC3f9kfe5rA1AJ24xxNZG0st+vWekSk7tB9oE+dJv5JXd0ZSijomvW0KPMoBd8qbN4g==",
             "license": "MIT",
             "dependencies": {
-                "@inquirer/core": "^10.1.10",
+                "@inquirer/core": "^10.1.11",
                 "@inquirer/figures": "^1.0.11",
                 "@inquirer/type": "^3.0.6",
                 "yoctocolors-cjs": "^2.1.2"
@@ -307,12 +307,12 @@
             }
         },
         "node_modules/@inquirer/select": {
-            "version": "4.2.0",
-            "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.2.0.tgz",
-            "integrity": "sha512-KkXQ4aSySWimpV4V/TUJWdB3tdfENZUU765GjOIZ0uPwdbGIG6jrxD4dDf1w68uP+DVtfNhr1A92B+0mbTZ8FA==",
+            "version": "4.2.1",
+            "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.2.1.tgz",
+            "integrity": "sha512-gt1Kd5XZm+/ddemcT3m23IP8aD8rC9drRckWoP/1f7OL46Yy2FGi8DSmNjEjQKtPl6SV96Kmjbl6p713KXJ/Jg==",
             "license": "MIT",
             "dependencies": {
-                "@inquirer/core": "^10.1.10",
+                "@inquirer/core": "^10.1.11",
                 "@inquirer/figures": "^1.0.11",
                 "@inquirer/type": "^3.0.6",
                 "ansi-escapes": "^4.3.2",
@@ -919,13 +919,13 @@
             }
         },
         "node_modules/inquirer": {
-            "version": "12.6.0",
-            "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.6.0.tgz",
-            "integrity": "sha512-3zmmccQd/8o65nPOZJZ+2wqt76Ghw3+LaMrmc6JE/IzcvQhJ1st+QLCOo/iLS85/tILU0myG31a2TAZX0ysAvg==",
+            "version": "12.6.1",
+            "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.6.1.tgz",
+            "integrity": "sha512-MGFnzHVS3l3oM3cy+LWkyR7UUtVEn3D5U41CZbEY34szToWoJAvaVtCTz1mxsEzZFk/HXWyCArn0HDgloTXMDw==",
             "license": "MIT",
             "dependencies": {
-                "@inquirer/core": "^10.1.10",
-                "@inquirer/prompts": "^7.5.0",
+                "@inquirer/core": "^10.1.11",
+                "@inquirer/prompts": "^7.5.1",
                 "@inquirer/type": "^3.0.6",
                 "ansi-escapes": "^4.3.2",
                 "mute-stream": "^2.0.0",
diff --git a/modules/ags/config/default.nix b/modules/ags/config/default.nix
index a5de3d96..6cf70f0f 100644
--- a/modules/ags/config/default.nix
+++ b/modules/ags/config/default.nix
@@ -1,3 +1,3 @@
 {
-  npmDepsHash = "sha256-25bLgrPaIm4UnQrmUaJuTLLCANcfMaSSCog8sBKAetE=";
+  npmDepsHash = "sha256-025XaMulS2FJ+IrAkB4A9UN4ZlMlKOcsWoFO4wcmPyE=";
 }
diff --git a/modules/ags/config/package-lock.json b/modules/ags/config/package-lock.json
index 38e63d28..45180d67 100644
--- a/modules/ags/config/package-lock.json
+++ b/modules/ags/config/package-lock.json
@@ -12,7 +12,7 @@
                 "@stylistic/eslint-plugin": "4.2.0",
                 "astal": "https://gitpkg.vercel.app/Aylur/astal/lang/gjs/src?07583deff8a486fad472718572c3248f0fbea1f3",
                 "eslint": "9.26.0",
-                "eslint-plugin-jsdoc": "50.6.11",
+                "eslint-plugin-jsdoc": "50.6.14",
                 "fzf": "0.5.2",
                 "jiti": "2.4.2",
                 "typescript-eslint": "8.32.0"
@@ -266,9 +266,9 @@
             }
         },
         "node_modules/@modelcontextprotocol/sdk": {
-            "version": "1.11.0",
-            "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.0.tgz",
-            "integrity": "sha512-k/1pb70eD638anoi0e8wUGAlbMJXyvdV4p62Ko+EZ7eBe1xMx8Uhak1R5DgfoofsK5IBBnRwsYGTaLZl+6/+RQ==",
+            "version": "1.11.1",
+            "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.11.1.tgz",
+            "integrity": "sha512-9LfmxKTb1v+vUS1/emSk1f5ePmTLkb9Le9AxOB5T0XM59EUumwcS45z05h7aiZx3GI0Bl7mjb3FMEglYj+acuQ==",
             "license": "MIT",
             "dependencies": {
                 "content-type": "^1.0.5",
@@ -990,9 +990,9 @@
             }
         },
         "node_modules/eslint-plugin-jsdoc": {
-            "version": "50.6.11",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.11.tgz",
-            "integrity": "sha512-k4+MnBCGR8cuIB5MZ++FGd4gbXxjob2rX1Nq0q3nWFF4xSGZENTgTLZSjb+u9B8SAnP6lpGV2FJrBjllV3pVSg==",
+            "version": "50.6.14",
+            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.14.tgz",
+            "integrity": "sha512-JUudvooQbUx3iB8n/MzXMOV/VtaXq7xL4CeXhYryinr8osck7nV6fE2/xUXTiH3epPXcvq6TE3HQfGQuRHErTQ==",
             "license": "BSD-3-Clause",
             "dependencies": {
                 "@es-joy/jsdoccomment": "~0.49.0",
@@ -1132,9 +1132,9 @@
             }
         },
         "node_modules/eventsource": {
-            "version": "3.0.6",
-            "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.6.tgz",
-            "integrity": "sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==",
+            "version": "3.0.7",
+            "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz",
+            "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==",
             "license": "MIT",
             "dependencies": {
                 "eventsource-parser": "^3.0.1"
diff --git a/modules/ags/config/package.json b/modules/ags/config/package.json
index fa422239..c4e75d70 100644
--- a/modules/ags/config/package.json
+++ b/modules/ags/config/package.json
@@ -7,7 +7,7 @@
         "@eslint/js": "9.26.0",
         "@stylistic/eslint-plugin": "4.2.0",
         "eslint": "9.26.0",
-        "eslint-plugin-jsdoc": "50.6.11",
+        "eslint-plugin-jsdoc": "50.6.14",
         "fzf": "0.5.2",
         "jiti": "2.4.2",
         "typescript-eslint": "8.32.0"
diff --git a/modules/docker/default.nix b/modules/docker/default.nix
index a527bca6..0fe33379 100644
--- a/modules/docker/default.nix
+++ b/modules/docker/default.nix
@@ -5,6 +5,7 @@ self: {
   ...
 }: let
   inherit (lib) mkIf mkOption types;
+  inherit (config.sops) secrets;
 
   cfg = config.roles.docker;
 in {
@@ -39,6 +40,12 @@ in {
     environment.systemPackages = [
       (pkgs.callPackage ./updateImage.nix {})
     ];
+    nix.settings.extra-sandbox-paths = [secrets.docker.path];
+    nixpkgs.overlays = [
+      (final: prev: {
+        skopeo = pkgs.writeScriptBin "skopeo" ''exec ${prev.skopeo}/bin/skopeo "$@" --authfile=${secrets.docker.path}'';
+      })
+    ];
 
     home-manager.users.root.home.file.".docker/config.json".text = ''
       {
diff --git a/scopedPackages/lovelace-components/material-rounded-theme/default.nix b/scopedPackages/lovelace-components/material-rounded-theme/default.nix
index 7a213360..1eab9a67 100644
--- a/scopedPackages/lovelace-components/material-rounded-theme/default.nix
+++ b/scopedPackages/lovelace-components/material-rounded-theme/default.nix
@@ -6,7 +6,7 @@
   ...
 }: let
   pname = "material-rounded-theme";
-  version = "4.0.5";
+  version = "4.0.6";
 in
   stdenv.mkDerivation {
     inherit pname version;
@@ -15,7 +15,7 @@ in
       owner = "Nerwyn";
       repo = pname;
       rev = version;
-      hash = "sha256-9q93FyRFISKaDLnSDCF1gn/pJnzGk3QNelY6w8Oba1k=";
+      hash = "sha256-KWr2luWOqBg3LXwB7F38DEPSu+FhBxkHPYRTMkU01gA=";
     };
 
     installPhase = ''