diff --git a/apps/config/package-lock.json b/apps/config/package-lock.json
index e23b7473..d24fedad 100644
--- a/apps/config/package-lock.json
+++ b/apps/config/package-lock.json
@@ -8,10 +8,10 @@
             "name": "eslint-conf",
             "version": "0.0.0",
             "dependencies": {
-                "@eslint/js": "9.22.0",
+                "@eslint/js": "9.23.0",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.22.0",
-                "eslint-plugin-jsdoc": "50.6.8",
+                "eslint": "9.23.0",
+                "eslint-plugin-jsdoc": "50.6.9",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.2",
@@ -108,9 +108,9 @@
             }
         },
         "node_modules/@eslint/config-helpers": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz",
-            "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==",
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz",
+            "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==",
             "license": "Apache-2.0",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -129,9 +129,9 @@
             }
         },
         "node_modules/@eslint/eslintrc": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz",
-            "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==",
+            "version": "3.3.1",
+            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
+            "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
             "license": "MIT",
             "dependencies": {
                 "ajv": "^6.12.4",
@@ -174,9 +174,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.22.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz",
-            "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==",
+            "version": "9.23.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
+            "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -729,18 +729,18 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.22.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz",
-            "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==",
+            "version": "9.23.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
+            "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
                 "@eslint/config-array": "^0.19.2",
-                "@eslint/config-helpers": "^0.1.0",
+                "@eslint/config-helpers": "^0.2.0",
                 "@eslint/core": "^0.12.0",
-                "@eslint/eslintrc": "^3.3.0",
-                "@eslint/js": "9.22.0",
+                "@eslint/eslintrc": "^3.3.1",
+                "@eslint/js": "9.23.0",
                 "@eslint/plugin-kit": "^0.2.7",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
@@ -789,9 +789,9 @@
             }
         },
         "node_modules/eslint-plugin-jsdoc": {
-            "version": "50.6.8",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.8.tgz",
-            "integrity": "sha512-PPZVqhoXaalMQwDGzcQrJtPSPIPOYsSMtvkjYAdsIazOW20yhYtVX4+jLL+XznD4zYTXyZbPWPRKkNev4D4lyw==",
+            "version": "50.6.9",
+            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.9.tgz",
+            "integrity": "sha512-7/nHu3FWD4QRG8tCVqcv+BfFtctUtEDWc29oeDXB4bwmDM2/r1ndl14AG/2DUntdqH7qmpvdemJKwb3R97/QEw==",
             "license": "BSD-3-Clause",
             "dependencies": {
                 "@es-joy/jsdoccomment": "~0.49.0",
diff --git a/apps/config/package.json b/apps/config/package.json
index 64cf4403..f287458c 100644
--- a/apps/config/package.json
+++ b/apps/config/package.json
@@ -4,10 +4,10 @@
     "type": "module",
     "exports": "./index.ts",
     "dependencies": {
-        "@eslint/js": "9.22.0",
+        "@eslint/js": "9.23.0",
         "@stylistic/eslint-plugin": "4.2.0",
-        "eslint": "9.22.0",
-        "eslint-plugin-jsdoc": "50.6.8",
+        "eslint": "9.23.0",
+        "eslint-plugin-jsdoc": "50.6.9",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.2",
diff --git a/apps/extract-subs/default.nix b/apps/extract-subs/default.nix
index 5c4523d2..919a7b86 100644
--- a/apps/extract-subs/default.nix
+++ b/apps/extract-subs/default.nix
@@ -5,7 +5,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-tkPQAeTGBSi6AvN4f6liDAKJpJ7EIV/9+MwqWUotghU=";
+  npmDepsHash = "sha256-t9gZeheEIGwYFQXSIgHedEzsJOtZnFvbwUWi0T2zmVo=";
 
   runtimeInputs = [
     ffmpeg-full
diff --git a/apps/extract-subs/package-lock.json b/apps/extract-subs/package-lock.json
index ac1c8bdd..35be1cf5 100644
--- a/apps/extract-subs/package-lock.json
+++ b/apps/extract-subs/package-lock.json
@@ -11,7 +11,7 @@
                 "@types/fluent-ffmpeg": "2.1.27",
                 "@types/node": "22.13.11",
                 "esbuild": "0.25.1",
-                "eslint": "9.22.0",
+                "eslint": "9.23.0",
                 "fluent-ffmpeg": "2.1.3",
                 "jiti": "2.4.2",
                 "typescript": "5.8.2"
@@ -492,9 +492,9 @@
             }
         },
         "node_modules/@eslint/config-helpers": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz",
-            "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==",
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz",
+            "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==",
             "license": "Apache-2.0",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -513,9 +513,9 @@
             }
         },
         "node_modules/@eslint/eslintrc": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz",
-            "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==",
+            "version": "3.3.1",
+            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
+            "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
             "license": "MIT",
             "dependencies": {
                 "ajv": "^6.12.4",
@@ -536,9 +536,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.22.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz",
-            "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==",
+            "version": "9.23.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
+            "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -875,18 +875,18 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.22.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz",
-            "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==",
+            "version": "9.23.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
+            "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
                 "@eslint/config-array": "^0.19.2",
-                "@eslint/config-helpers": "^0.1.0",
+                "@eslint/config-helpers": "^0.2.0",
                 "@eslint/core": "^0.12.0",
-                "@eslint/eslintrc": "^3.3.0",
-                "@eslint/js": "9.22.0",
+                "@eslint/eslintrc": "^3.3.1",
+                "@eslint/js": "9.23.0",
                 "@eslint/plugin-kit": "^0.2.7",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
diff --git a/apps/extract-subs/package.json b/apps/extract-subs/package.json
index 350fc80b..82cafff0 100644
--- a/apps/extract-subs/package.json
+++ b/apps/extract-subs/package.json
@@ -11,7 +11,7 @@
         "fluent-ffmpeg": "2.1.3",
         "@types/node": "22.13.11",
         "esbuild": "0.25.1",
-        "eslint": "9.22.0",
+        "eslint": "9.23.0",
         "jiti": "2.4.2",
         "typescript": "5.8.2"
     },
diff --git a/apps/mc-mods/default.nix b/apps/mc-mods/default.nix
index 0bbfac1a..8b78c4fb 100644
--- a/apps/mc-mods/default.nix
+++ b/apps/mc-mods/default.nix
@@ -5,7 +5,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-wHpunFDQ6V/Es/xWXGZg6CgeAfZEQM3k6o53H4Uu2wM=";
+  npmDepsHash = "sha256-+dAii/IbWELkdGLDTIkU77DFTTmh6etv3R3xpiDPOQk=";
 
   runtimeInputs = [
     nodejs_latest
diff --git a/apps/mc-mods/package-lock.json b/apps/mc-mods/package-lock.json
index b98e7e27..2633f006 100644
--- a/apps/mc-mods/package-lock.json
+++ b/apps/mc-mods/package-lock.json
@@ -10,7 +10,7 @@
             "dependencies": {
                 "@types/node": "22.13.11",
                 "esbuild": "0.25.1",
-                "eslint": "9.22.0",
+                "eslint": "9.23.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.2"
@@ -27,10 +27,10 @@
             "version": "0.0.0",
             "dev": true,
             "dependencies": {
-                "@eslint/js": "9.22.0",
+                "@eslint/js": "9.23.0",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.22.0",
-                "eslint-plugin-jsdoc": "50.6.8",
+                "eslint": "9.23.0",
+                "eslint-plugin-jsdoc": "50.6.9",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.2",
@@ -491,9 +491,9 @@
             }
         },
         "node_modules/@eslint/config-helpers": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz",
-            "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==",
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz",
+            "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==",
             "license": "Apache-2.0",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -512,9 +512,9 @@
             }
         },
         "node_modules/@eslint/eslintrc": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz",
-            "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==",
+            "version": "3.3.1",
+            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
+            "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
             "license": "MIT",
             "dependencies": {
                 "ajv": "^6.12.4",
@@ -535,9 +535,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.22.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz",
-            "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==",
+            "version": "9.23.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
+            "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -866,18 +866,18 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.22.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz",
-            "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==",
+            "version": "9.23.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
+            "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
                 "@eslint/config-array": "^0.19.2",
-                "@eslint/config-helpers": "^0.1.0",
+                "@eslint/config-helpers": "^0.2.0",
                 "@eslint/core": "^0.12.0",
-                "@eslint/eslintrc": "^3.3.0",
-                "@eslint/js": "9.22.0",
+                "@eslint/eslintrc": "^3.3.1",
+                "@eslint/js": "9.23.0",
                 "@eslint/plugin-kit": "^0.2.7",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
diff --git a/apps/mc-mods/package.json b/apps/mc-mods/package.json
index bb7ff1b1..7467244e 100644
--- a/apps/mc-mods/package.json
+++ b/apps/mc-mods/package.json
@@ -9,7 +9,7 @@
     "dependencies": {
         "@types/node": "22.13.11",
         "esbuild": "0.25.1",
-        "eslint": "9.22.0",
+        "eslint": "9.23.0",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.2"
diff --git a/apps/pin-inputs/default.nix b/apps/pin-inputs/default.nix
index c1bf3207..312ba953 100644
--- a/apps/pin-inputs/default.nix
+++ b/apps/pin-inputs/default.nix
@@ -1,7 +1,7 @@
 {buildApp, ...}:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-mzXb7hfJkY6Dgb7MHRbFS1CC56K+VcggrZ1Hu5BaMS8=";
+  npmDepsHash = "sha256-ZofvMJlZF3znFIPCeVgfjO/desMHYcxwA09E5q9KqUI=";
 
   runtimeInputs = [];
 
diff --git a/apps/pin-inputs/package-lock.json b/apps/pin-inputs/package-lock.json
index b9d7a820..693ac0cd 100644
--- a/apps/pin-inputs/package-lock.json
+++ b/apps/pin-inputs/package-lock.json
@@ -10,7 +10,7 @@
             "dependencies": {
                 "@types/node": "22.13.11",
                 "esbuild": "0.25.1",
-                "eslint": "9.22.0",
+                "eslint": "9.23.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.2"
@@ -27,10 +27,10 @@
             "version": "0.0.0",
             "dev": true,
             "dependencies": {
-                "@eslint/js": "9.22.0",
+                "@eslint/js": "9.23.0",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.22.0",
-                "eslint-plugin-jsdoc": "50.6.8",
+                "eslint": "9.23.0",
+                "eslint-plugin-jsdoc": "50.6.9",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.2",
@@ -491,9 +491,9 @@
             }
         },
         "node_modules/@eslint/config-helpers": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz",
-            "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==",
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz",
+            "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==",
             "license": "Apache-2.0",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -512,9 +512,9 @@
             }
         },
         "node_modules/@eslint/eslintrc": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz",
-            "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==",
+            "version": "3.3.1",
+            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
+            "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
             "license": "MIT",
             "dependencies": {
                 "ajv": "^6.12.4",
@@ -535,9 +535,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.22.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz",
-            "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==",
+            "version": "9.23.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
+            "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -866,18 +866,18 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.22.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz",
-            "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==",
+            "version": "9.23.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
+            "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
                 "@eslint/config-array": "^0.19.2",
-                "@eslint/config-helpers": "^0.1.0",
+                "@eslint/config-helpers": "^0.2.0",
                 "@eslint/core": "^0.12.0",
-                "@eslint/eslintrc": "^3.3.0",
-                "@eslint/js": "9.22.0",
+                "@eslint/eslintrc": "^3.3.1",
+                "@eslint/js": "9.23.0",
                 "@eslint/plugin-kit": "^0.2.7",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
diff --git a/apps/pin-inputs/package.json b/apps/pin-inputs/package.json
index 06bac476..2bb7c8ee 100644
--- a/apps/pin-inputs/package.json
+++ b/apps/pin-inputs/package.json
@@ -9,7 +9,7 @@
     "dependencies": {
         "@types/node": "22.13.11",
         "esbuild": "0.25.1",
-        "eslint": "9.22.0",
+        "eslint": "9.23.0",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.2"
diff --git a/apps/update-sources/default.nix b/apps/update-sources/default.nix
index 42c3d611..ae6afe5b 100644
--- a/apps/update-sources/default.nix
+++ b/apps/update-sources/default.nix
@@ -12,7 +12,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-DnKFIDymf/Aa0eblbUcfE5QuikZ8HeN2h61Bwvipx0E=";
+  npmDepsHash = "sha256-Vgwc+2XbnX1FhpjPoymikVoNKW+l6Q2VmDNNa9uWlLg=";
 
   runtimeInputs = [
     curl
diff --git a/apps/update-sources/package-lock.json b/apps/update-sources/package-lock.json
index 1fe7af8d..b1e8da4a 100644
--- a/apps/update-sources/package-lock.json
+++ b/apps/update-sources/package-lock.json
@@ -10,7 +10,7 @@
             "dependencies": {
                 "@types/node": "22.13.11",
                 "esbuild": "0.25.1",
-                "eslint": "9.22.0",
+                "eslint": "9.23.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.2"
@@ -491,9 +491,9 @@
             }
         },
         "node_modules/@eslint/config-helpers": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz",
-            "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==",
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz",
+            "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==",
             "license": "Apache-2.0",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -512,9 +512,9 @@
             }
         },
         "node_modules/@eslint/eslintrc": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz",
-            "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==",
+            "version": "3.3.1",
+            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
+            "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
             "license": "MIT",
             "dependencies": {
                 "ajv": "^6.12.4",
@@ -535,9 +535,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.22.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz",
-            "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==",
+            "version": "9.23.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
+            "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -866,18 +866,18 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.22.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz",
-            "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==",
+            "version": "9.23.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
+            "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
                 "@eslint/config-array": "^0.19.2",
-                "@eslint/config-helpers": "^0.1.0",
+                "@eslint/config-helpers": "^0.2.0",
                 "@eslint/core": "^0.12.0",
-                "@eslint/eslintrc": "^3.3.0",
-                "@eslint/js": "9.22.0",
+                "@eslint/eslintrc": "^3.3.1",
+                "@eslint/js": "9.23.0",
                 "@eslint/plugin-kit": "^0.2.7",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
diff --git a/apps/update-sources/package.json b/apps/update-sources/package.json
index 7bda8050..0786d100 100644
--- a/apps/update-sources/package.json
+++ b/apps/update-sources/package.json
@@ -9,7 +9,7 @@
     "dependencies": {
         "@types/node": "22.13.11",
         "esbuild": "0.25.1",
-        "eslint": "9.22.0",
+        "eslint": "9.23.0",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.2"
diff --git a/configurations/nos/modules/docker/forgejo/images/forgejo.nix b/configurations/nos/modules/docker/forgejo/images/forgejo.nix
index 97014854..4183313a 100644
--- a/configurations/nos/modules/docker/forgejo/images/forgejo.nix
+++ b/configurations/nos/modules/docker/forgejo/images/forgejo.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "codeberg.org/forgejo/forgejo";
-  imageDigest = "sha256:95c46edf71cef1b18500fce60313b4d7f7652ea7d78ba71033155efc25f16093";
-  hash = "sha256-LCiw9tKYj5CnaZk6eq/RXrvr13/tYFvsxqEYV13BvgE=";
+  imageDigest = "sha256:99b6c15a1bc98e623103a83a04023662a93fd035dac4f0a856d781afa9d71095";
+  hash = "sha256-QRs4/j9sAWTeSfA8vTm7eSVZBEsFMT34UEu/7RtriL4=";
   finalImageName = imageName;
   finalImageTag = "10";
 }
diff --git a/configurations/nos/modules/docker/freshrss/images/rss-bridge.nix b/configurations/nos/modules/docker/freshrss/images/rss-bridge.nix
index fa989305..ad05e846 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:1b78c8b4bc74fe1eb1c92e101dfb4d1d3fb278d3c530baff4097febc18f06615";
-  hash = "sha256-uQKNakebpm3sM95o8kgtTRzDETB0Ao+003nszO1FlGk=";
+  imageDigest = "sha256:721f7e5a8619e2b77569393bda271538f5ae21686629e0e3abe0fa18599e08fc";
+  hash = "sha256-TotMQiL6uhPJ+N3sO0+F5dD/R9BzYtm/XlaD6D5Aq7o=";
   finalImageName = imageName;
   finalImageTag = "latest";
 }
diff --git a/configurations/nos/modules/docker/media/radarr/images/radarr.nix b/configurations/nos/modules/docker/media/radarr/images/radarr.nix
index 2361e31f..caf0a20b 100644
--- a/configurations/nos/modules/docker/media/radarr/images/radarr.nix
+++ b/configurations/nos/modules/docker/media/radarr/images/radarr.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "ghcr.io/linuxserver/radarr";
-  imageDigest = "sha256:23677e1cb09bd957796f4521748f0eff9eb65d883949c10442635eabe64b750a";
-  hash = "sha256-GHammLG9pc77k59pF1PBA2z/sMre+voES2YgbQe01Fg=";
+  imageDigest = "sha256:de82a83c39316ef10024a17e6d0f5238bc27347b39ce4508a633604b4f48302d";
+  hash = "sha256-pg886CAboy7RyVd9HIfcBAtYZ/zZnbi9QI8O+H+KfR4=";
   finalImageName = imageName;
   finalImageTag = "latest";
 }
diff --git a/flake.lock b/flake.lock
index dd44e62d..7cc8c1d6 100644
--- a/flake.lock
+++ b/flake.lock
@@ -155,11 +155,11 @@
     "custom-sidebar-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1742295345,
-        "narHash": "sha256-7I3/6gi+zhGoiJsKvFgk49VQF05th3p8+yHt61zXjMs=",
+        "lastModified": 1742749091,
+        "narHash": "sha256-mU4krpoR0bKP6f0bWDSAbtgovJHLkzJje7D0ngV+uLo=",
         "owner": "elchininet",
         "repo": "custom-sidebar",
-        "rev": "cb859ddcc3177d8aac73b926ccdff0406f4b11af",
+        "rev": "f05f4cd515228effa45180ccab8bfe6ee7cca5b4",
         "type": "github"
       },
       "original": {
@@ -424,11 +424,11 @@
     "gtk-theme-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1741892283,
-        "narHash": "sha256-hFiYb1KqYvH66OIhmIUP3DfkSkuYgE78ihjkEaAY7LM=",
+        "lastModified": 1742669357,
+        "narHash": "sha256-f7bYYkAm4f0kSaDY1X2ZLLxlXwzUdFtjHkIeX0QmX9w=",
         "owner": "dracula",
         "repo": "gtk",
-        "rev": "fc59294cf67110f6487f5fd06d3c845ffffdf1a9",
+        "rev": "e7f118ac0434988800453bc30671b55ccfe02bd9",
         "type": "github"
       },
       "original": {
@@ -444,11 +444,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1742569620,
-        "narHash": "sha256-igC2cu+cPRB3E4QwKR+vGagyAtoyB+DrmWwDKm8jkaw=",
+        "lastModified": 1742756669,
+        "narHash": "sha256-55QHo/lETkGO4lUfxhJ6TUs5OLOz5Ks7JDNAKDzpt4I=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "8a68f18e96bcab13e4f97bece61e6602298a3141",
+        "rev": "0e75a40458d065d1e5c6a10d0b74b9e35b550ae6",
         "type": "github"
       },
       "original": {
@@ -525,11 +525,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1742051449,
-        "narHash": "sha256-is29ny+x0P1rIEiNUNarqzavFdmvLs+rslxihGycklE=",
+        "lastModified": 1742721406,
+        "narHash": "sha256-as4AVwRDvrvR0gS7iMI8AN6GKBT+BdawB/vYWj9qRic=",
         "owner": "horriblename",
         "repo": "hyprgrass",
-        "rev": "5453be107e8c7b88f6274122d064bf602852745f",
+        "rev": "a7889957ff77bdade1f57b171083053f7a3c47dd",
         "type": "github"
       },
       "original": {
@@ -560,11 +560,11 @@
         "xdph": "xdph"
       },
       "locked": {
-        "lastModified": 1742563987,
-        "narHash": "sha256-P7rQo7SClIFU6OkUlnN01OqVWsjTMgmG/8gqhpXHfRI=",
+        "lastModified": 1742746774,
+        "narHash": "sha256-6BMwAfC604szlL8S7BJkH8a090p0505rFB+mAiApBoo=",
         "owner": "hyprwm",
         "repo": "Hyprland",
-        "rev": "c7f0519fafbf334a8f5088a8a0fc385732a24036",
+        "rev": "e4abf26069b4d43c8f6ad6b3dfb56c952abb38c2",
         "type": "github"
       },
       "original": {
@@ -846,11 +846,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1742569454,
-        "narHash": "sha256-KZmq/mnzVs7XDi/pHglIP3tMeODMg++v/BRfeBiA+o4=",
+        "lastModified": 1742732124,
+        "narHash": "sha256-LH5bqrAmNnVJmtSjCfvDxPaWRC2YHg1gllO1k8Us0po=",
         "owner": "kotontrion",
         "repo": "kompass",
-        "rev": "4971273ae8cc3c2d8baec37957a48be4098e49b2",
+        "rev": "9bc25c7f15b537df274c812d249ed1f73fcb2cf3",
         "type": "github"
       },
       "original": {
@@ -867,11 +867,11 @@
         "nixpkgs-lib": "nixpkgs-lib"
       },
       "locked": {
-        "lastModified": 1742411562,
-        "narHash": "sha256-JU2eVyIbRDH9PWFtAQuwb4W1xUheZt8ZTTpjoqAMU0k=",
+        "lastModified": 1742732002,
+        "narHash": "sha256-fznNOUwLtsnaFHIeHfmj1QxOhjiohM2oiGj/54IO+AI=",
         "owner": "nix-community",
         "repo": "lib-aggregate",
-        "rev": "b22d96436e482510231d67d1fce03abae1376434",
+        "rev": "00480968bd30f3f43bcd520046bb647833bf2cf2",
         "type": "github"
       },
       "original": {
@@ -1144,11 +1144,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1742521627,
-        "narHash": "sha256-hMp13ZbQFVzT55LQJrJ9cX+T0XLsTf4mTRRIfQAPcrs=",
+        "lastModified": 1742694749,
+        "narHash": "sha256-hH/Wofw+RKBbcTMuzCvvgPrnTkmEZd54bOsT0QR7EJM=",
         "owner": "fufexan",
         "repo": "nix-gaming",
-        "rev": "6f0d1034a2ba574c57952d6c29666b0fdfc5693e",
+        "rev": "1491461d4a47f61264df62863ed163a00192b2f1",
         "type": "github"
       },
       "original": {
@@ -1184,11 +1184,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1742174123,
-        "narHash": "sha256-pDNzMoR6m1ZSJToZQ6XDTLVSdzIzmFl1b8Pc3f7iV6Y=",
+        "lastModified": 1742701275,
+        "narHash": "sha256-AulwPVrS9859t+eJ61v24wH/nfBEIDSXYxlRo3fL/SA=",
         "owner": "Mic92",
         "repo": "nix-index-database",
-        "rev": "2cfb4e1ca32f59dd2811d7a6dd5d4d1225f0955c",
+        "rev": "36dc43cb50d5d20f90a28d53abb33a32b0a2aae6",
         "type": "github"
       },
       "original": {
@@ -1240,11 +1240,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1742469527,
-        "narHash": "sha256-4RYuXu2q+fgu+lDIAPEZW/C5+OMbfyOgoJ+S3OQMhcQ=",
+        "lastModified": 1742580728,
+        "narHash": "sha256-SyhAnd66UwtisdTOen13K5iSRkp/H+/w9tYH8c4AGKc=",
         "owner": "kaylorben",
         "repo": "nixcord",
-        "rev": "f9797561bd3b0dbe13d56567dfd6f54c49b80d8f",
+        "rev": "b5f200ebbc880dd69ce06a9cd442fc758f426f87",
         "type": "github"
       },
       "original": {
@@ -1353,11 +1353,11 @@
     },
     "nixpkgs-lib": {
       "locked": {
-        "lastModified": 1742087259,
-        "narHash": "sha256-blNFfJM8car2wY2dMNsxu1x5Wy1CsvSgzrNtdVQxrmY=",
+        "lastModified": 1742692082,
+        "narHash": "sha256-s3XOULQj7BVO7myY5V4Sob0tRZ7nRpwEOIzXg/MkD/Q=",
         "owner": "nix-community",
         "repo": "nixpkgs.lib",
-        "rev": "e3bcabc74538dbecedf3077ae96c081c3a2bb9e6",
+        "rev": "a09310bc940f245e51b1ffea68731244ca38f2bd",
         "type": "github"
       },
       "original": {
@@ -1379,11 +1379,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1742563604,
-        "narHash": "sha256-rDzczIE+vYE1D+Ez/iyfGYCLmCQe9gYxCgvOAqP4A2E=",
+        "lastModified": 1742734205,
+        "narHash": "sha256-lNKab0pvZ7hXbmT68ujRBqKouxDnR1UdKK4RnLXy+sk=",
         "owner": "nix-community",
         "repo": "nixpkgs-wayland",
-        "rev": "875107dca3af36feb32f388a297c281f05a2cb6c",
+        "rev": "5acb0bcac2293d8402c515f95c036cd46005341d",
         "type": "github"
       },
       "original": {
@@ -1584,11 +1584,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1742300892,
-        "narHash": "sha256-QmF0proyjXI9YyZO9GZmc7/uEu5KVwCtcdLsKSoxPAI=",
+        "lastModified": 1742649964,
+        "narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=",
         "owner": "cachix",
         "repo": "git-hooks.nix",
-        "rev": "ea26a82dda75bee6783baca6894040c8e6599728",
+        "rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82",
         "type": "github"
       },
       "original": {
@@ -1752,11 +1752,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1742406979,
-        "narHash": "sha256-r0aq70/3bmfjTP+JZs4+XV5SgmCtk1BLU4CQPWGtA7o=",
+        "lastModified": 1742700801,
+        "narHash": "sha256-ZGlpUDsuBdeZeTNgoMv+aw0ByXT2J3wkYw9kJwkAS4M=",
         "owner": "Mic92",
         "repo": "sops-nix",
-        "rev": "1770be8ad89e41f1ed5a60ce628dd10877cb3609",
+        "rev": "67566fe68a8bed2a7b1175fdfb0697ed22ae8852",
         "type": "github"
       },
       "original": {
@@ -1851,11 +1851,11 @@
     "ts-for-gir-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1742556360,
-        "narHash": "sha256-LdpRi2UgV5zzgvpHRK1HhkTEsvQm7VUEgqWFYpxSlns=",
+        "lastModified": 1742620702,
+        "narHash": "sha256-w6dAjvfuDbfsI9Wxg9MSavsHkXAznomrFs5sD2Q/eZg=",
         "owner": "gjsify",
         "repo": "ts-for-gir",
-        "rev": "7d5ea67f20d9a495a48f7745791619c8980ab3d4",
+        "rev": "3f4d63534dd03ad8bbcfb57b3308adfafc27f725",
         "type": "github"
       },
       "original": {
@@ -1867,11 +1867,11 @@
     "tuya-local-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1742554295,
-        "narHash": "sha256-QIsnyXpSZp/RAdRMK7y0FjidBo3lJ1gDEGxu4DJ3VWs=",
+        "lastModified": 1742723062,
+        "narHash": "sha256-tGeq29iGUE9ncURpSxL6uKLz1NviAOM7ObGfLV6tFVU=",
         "owner": "make-all",
         "repo": "tuya-local",
-        "rev": "57cfbd01948300ac8c75a045c83cbd956b52a1d2",
+        "rev": "8207ad2f53798258f94b7c0652a5e33071832548",
         "type": "github"
       },
       "original": {
diff --git a/lib/pkgs/mk-types/default.nix b/lib/pkgs/mk-types/default.nix
index a3b1945e..87d0992d 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-voyuZcsEKAPnebQYVli/FKa5O807zS94g9kGMMclEIo=";
+    npmDepsHash = "sha256-ashBeJG1B+Inmux0PVnSIk5E1Tb7v5+we5zkh9yvYXo=";
 
     src = ./.;
     dontNpmBuild = true;
diff --git a/lib/pkgs/mk-types/package-lock.json b/lib/pkgs/mk-types/package-lock.json
index 1fe5171c..041f610d 100644
--- a/lib/pkgs/mk-types/package-lock.json
+++ b/lib/pkgs/mk-types/package-lock.json
@@ -5,7 +5,7 @@
     "packages": {
         "": {
             "dependencies": {
-                "@ts-for-gir/cli": "4.0.0-beta.21"
+                "@ts-for-gir/cli": "4.0.0-beta.23"
             }
         },
         "node_modules/@babel/code-frame": {
@@ -32,12 +32,12 @@
             }
         },
         "node_modules/@gi.ts/parser": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/@gi.ts/parser/-/parser-2.0.0.tgz",
-            "integrity": "sha512-Tz5T+3Ep+qY7rfBnYMGdVraCCUf1CKkDfxNd2fggfHLzjI7u5Th8a/piPgj0001jDs5czI+Ec3peh+6gkKPmHw==",
+            "version": "4.0.0-beta.23",
+            "resolved": "https://registry.npmjs.org/@gi.ts/parser/-/parser-4.0.0-beta.23.tgz",
+            "integrity": "sha512-PH3x+++ZECvsrFvhSITrrYQxyLaVg+PK6oJp81k5m0A5SL58tJOWDteblD72y7m70GnVMGBW/2Xi+IKE+v5xxg==",
             "license": "MIT",
             "dependencies": {
-                "fast-xml-parser": "^4.3.5"
+                "fast-xml-parser": "^5.0.9"
             },
             "engines": {
                 "node": ">=12.0.0"
@@ -394,22 +394,22 @@
             }
         },
         "node_modules/@ts-for-gir/cli": {
-            "version": "4.0.0-beta.21",
-            "resolved": "https://registry.npmjs.org/@ts-for-gir/cli/-/cli-4.0.0-beta.21.tgz",
-            "integrity": "sha512-9QkrqW+8+7iYF3lz4gNDCeh5WRM1eLf3LdJdnDJZ6mh/zD00nglS2wZjlIMIdSuzIhixwiP8bPlc0u+BisOkHw==",
+            "version": "4.0.0-beta.23",
+            "resolved": "https://registry.npmjs.org/@ts-for-gir/cli/-/cli-4.0.0-beta.23.tgz",
+            "integrity": "sha512-LrJLF3FecEQPrA5TdGic3kOOSlXeNdaFuNe0w67U/ayl9Ld30bQO6Q1jXgZwi+lxWZiNOyx4Xb12O9N3/3Z9sA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@gi.ts/parser": "^2.0.0",
-                "@inquirer/prompts": "^7.3.2",
-                "@ts-for-gir/generator-base": "^4.0.0-beta.21",
-                "@ts-for-gir/generator-html-doc": "^4.0.0-beta.21",
-                "@ts-for-gir/generator-typescript": "^4.0.0-beta.21",
-                "@ts-for-gir/lib": "^4.0.0-beta.21",
+                "@gi.ts/parser": "^4.0.0-beta.23",
+                "@inquirer/prompts": "^7.4.0",
+                "@ts-for-gir/generator-base": "^4.0.0-beta.23",
+                "@ts-for-gir/generator-html-doc": "^4.0.0-beta.23",
+                "@ts-for-gir/generator-typescript": "^4.0.0-beta.23",
+                "@ts-for-gir/lib": "^4.0.0-beta.23",
                 "colorette": "^2.0.20",
                 "cosmiconfig": "^9.0.0",
                 "glob": "^11.0.1",
-                "inquirer": "^12.4.2",
-                "prettier": "^3.5.1",
+                "inquirer": "^12.5.0",
+                "prettier": "^3.5.3",
                 "yargs": "^17.7.2"
             },
             "bin": {
@@ -420,38 +420,38 @@
             }
         },
         "node_modules/@ts-for-gir/generator-base": {
-            "version": "4.0.0-beta.21",
-            "resolved": "https://registry.npmjs.org/@ts-for-gir/generator-base/-/generator-base-4.0.0-beta.21.tgz",
-            "integrity": "sha512-Hl6RsCnG+vVF/SW1QLv58R5fLEMF6xLr+XVpjPlS4ZXrR4X5iYVwRV7SHAXzi903lqTH3TiQ446HjSRtyk7P8A==",
+            "version": "4.0.0-beta.23",
+            "resolved": "https://registry.npmjs.org/@ts-for-gir/generator-base/-/generator-base-4.0.0-beta.23.tgz",
+            "integrity": "sha512-XMDzS6/DSYwt2ldzWfqRbWYR7vF8Q8GCpVl4gzRoUNLDzetsgtcX/pqxCOG+UxzOrWQ98w1ywVkb0jvbjwJU5Q==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@ts-for-gir/lib": "^4.0.0-beta.21"
+                "@ts-for-gir/lib": "^4.0.0-beta.23"
             },
             "engines": {
                 "node": ">=18"
             }
         },
         "node_modules/@ts-for-gir/generator-html-doc": {
-            "version": "4.0.0-beta.21",
-            "resolved": "https://registry.npmjs.org/@ts-for-gir/generator-html-doc/-/generator-html-doc-4.0.0-beta.21.tgz",
-            "integrity": "sha512-5JcVRegau3uhdrtxJFw6cxX9HS3d6TIntnZ4r/fn3rUPUcfKbCbz6fiMqQbc6Tnkn5N/RpwcOrVXT396uNNSjA==",
+            "version": "4.0.0-beta.23",
+            "resolved": "https://registry.npmjs.org/@ts-for-gir/generator-html-doc/-/generator-html-doc-4.0.0-beta.23.tgz",
+            "integrity": "sha512-+VAklnA2WoeCyqBHg1E1K/r2ArtNsbEVHhZrh81bQV6omM8Q9XiETsCaBi5+92cNfbfZ/qDqzif12rEeCCCpxw==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@ts-for-gir/generator-base": "^4.0.0-beta.21",
-                "@ts-for-gir/lib": "^4.0.0-beta.21"
+                "@ts-for-gir/generator-base": "^4.0.0-beta.23",
+                "@ts-for-gir/lib": "^4.0.0-beta.23"
             },
             "engines": {
                 "node": ">=18"
             }
         },
         "node_modules/@ts-for-gir/generator-typescript": {
-            "version": "4.0.0-beta.21",
-            "resolved": "https://registry.npmjs.org/@ts-for-gir/generator-typescript/-/generator-typescript-4.0.0-beta.21.tgz",
-            "integrity": "sha512-CcA35p+0Q5H1YVXXgzNBD+JN8Vfd/sJwm4l3glp2vvXqsqHt+gHn74Km8c/rkKIgzu4oGmsFsqj4lQ6cqDWTjA==",
+            "version": "4.0.0-beta.23",
+            "resolved": "https://registry.npmjs.org/@ts-for-gir/generator-typescript/-/generator-typescript-4.0.0-beta.23.tgz",
+            "integrity": "sha512-CX3h04cwbLZYJ//y9EweJqtCQkcrl0gtNUa4TIO0/jL49Ki3ckLgvw57njLsIkfwLvDZ98h0dpeFhdSQPFcCqQ==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@ts-for-gir/generator-base": "^4.0.0-beta.21",
-                "@ts-for-gir/lib": "^4.0.0-beta.21",
+                "@ts-for-gir/generator-base": "^4.0.0-beta.23",
+                "@ts-for-gir/lib": "^4.0.0-beta.23",
                 "ejs": "^3.1.10",
                 "xml2js": "^0.6.2"
             },
@@ -460,12 +460,12 @@
             }
         },
         "node_modules/@ts-for-gir/lib": {
-            "version": "4.0.0-beta.21",
-            "resolved": "https://registry.npmjs.org/@ts-for-gir/lib/-/lib-4.0.0-beta.21.tgz",
-            "integrity": "sha512-vIzJwRBnBLxI4gqd/bAqK7GVFJ9+5SWBLw3fmSxYwavOifLYHsWZfLHVScsByZgO8pz6NQ/MUkaiRNMoPtt2jg==",
+            "version": "4.0.0-beta.23",
+            "resolved": "https://registry.npmjs.org/@ts-for-gir/lib/-/lib-4.0.0-beta.23.tgz",
+            "integrity": "sha512-WeZteowisNfYW6IMDCpii59fFPEsJcSm5N/Ec9rIpr0yxGowOBTPohrN2f67MT07MylpxYCR4k7LQObAn1nMsA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@gi.ts/parser": "^2.0.0",
+                "@gi.ts/parser": "^4.0.0-beta.23",
                 "colorette": "^2.0.20",
                 "ejs": "^3.1.10",
                 "glob": "^11.0.1",
@@ -795,9 +795,9 @@
             }
         },
         "node_modules/fast-xml-parser": {
-            "version": "4.5.3",
-            "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz",
-            "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==",
+            "version": "5.0.9",
+            "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.0.9.tgz",
+            "integrity": "sha512-2mBwCiuW3ycKQQ6SOesSB8WeF+fIGb6I/GG5vU5/XEptwFFhp9PE8b9O7fbs2dpq9fXn4ULR3UsfydNUCntf5A==",
             "funding": [
                 {
                     "type": "github",
@@ -806,7 +806,7 @@
             ],
             "license": "MIT",
             "dependencies": {
-                "strnum": "^1.1.1"
+                "strnum": "^2.0.5"
             },
             "bin": {
                 "fxparser": "src/cli/cli.js"
@@ -1367,9 +1367,9 @@
             }
         },
         "node_modules/strnum": {
-            "version": "1.1.2",
-            "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz",
-            "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==",
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.0.5.tgz",
+            "integrity": "sha512-YAT3K/sgpCUxhxNMrrdhtod3jckkpYwH6JAuwmUdXZsmzH1wUyzTMrrK2wYCEEqlKwrWDd35NeuUkbBy/1iK+Q==",
             "funding": [
                 {
                     "type": "github",
diff --git a/lib/pkgs/mk-types/package.json b/lib/pkgs/mk-types/package.json
index 1b7d6a76..e05f0560 100644
--- a/lib/pkgs/mk-types/package.json
+++ b/lib/pkgs/mk-types/package.json
@@ -1,5 +1,5 @@
 {
     "dependencies": {
-        "@ts-for-gir/cli": "4.0.0-beta.21"
+        "@ts-for-gir/cli": "4.0.0-beta.23"
     }
 }
diff --git a/modules/ags/config/default.nix b/modules/ags/config/default.nix
index 4f236904..24ea979a 100644
--- a/modules/ags/config/default.nix
+++ b/modules/ags/config/default.nix
@@ -1,3 +1,3 @@
 {
-  npmDepsHash = "sha256-zfeMJQVDl2EYiKNAn77VIawIAMckAAPfzADNlV/qJ1w=";
+  npmDepsHash = "sha256-CVKhJMdI5D9jLU+6VdxmbPgdlQhgLFIy2CiLcGq2YXo=";
 }
diff --git a/modules/ags/config/package-lock.json b/modules/ags/config/package-lock.json
index 03a1753e..2186fc4d 100644
--- a/modules/ags/config/package-lock.json
+++ b/modules/ags/config/package-lock.json
@@ -8,11 +8,11 @@
             "name": "ags",
             "version": "0.0.0",
             "dependencies": {
-                "@eslint/js": "9.22.0",
+                "@eslint/js": "9.23.0",
                 "@stylistic/eslint-plugin": "4.2.0",
                 "astal": "https://gitpkg.vercel.app/Aylur/astal/lang/gjs/src?dc0e5d37abe9424c53dcbd2506a4886ffee6296e",
-                "eslint": "9.22.0",
-                "eslint-plugin-jsdoc": "50.6.8",
+                "eslint": "9.23.0",
+                "eslint-plugin-jsdoc": "50.6.9",
                 "fzf": "0.5.2",
                 "jiti": "2.4.2",
                 "typescript-eslint": "8.27.0"
@@ -108,9 +108,9 @@
             }
         },
         "node_modules/@eslint/config-helpers": {
-            "version": "0.1.0",
-            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz",
-            "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==",
+            "version": "0.2.0",
+            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz",
+            "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==",
             "license": "Apache-2.0",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -129,9 +129,9 @@
             }
         },
         "node_modules/@eslint/eslintrc": {
-            "version": "3.3.0",
-            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz",
-            "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==",
+            "version": "3.3.1",
+            "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
+            "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
             "license": "MIT",
             "dependencies": {
                 "ajv": "^6.12.4",
@@ -174,9 +174,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.22.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz",
-            "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==",
+            "version": "9.23.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
+            "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -728,18 +728,18 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.22.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz",
-            "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==",
+            "version": "9.23.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
+            "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
                 "@eslint/config-array": "^0.19.2",
-                "@eslint/config-helpers": "^0.1.0",
+                "@eslint/config-helpers": "^0.2.0",
                 "@eslint/core": "^0.12.0",
-                "@eslint/eslintrc": "^3.3.0",
-                "@eslint/js": "9.22.0",
+                "@eslint/eslintrc": "^3.3.1",
+                "@eslint/js": "9.23.0",
                 "@eslint/plugin-kit": "^0.2.7",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
@@ -788,9 +788,9 @@
             }
         },
         "node_modules/eslint-plugin-jsdoc": {
-            "version": "50.6.8",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.8.tgz",
-            "integrity": "sha512-PPZVqhoXaalMQwDGzcQrJtPSPIPOYsSMtvkjYAdsIazOW20yhYtVX4+jLL+XznD4zYTXyZbPWPRKkNev4D4lyw==",
+            "version": "50.6.9",
+            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-50.6.9.tgz",
+            "integrity": "sha512-7/nHu3FWD4QRG8tCVqcv+BfFtctUtEDWc29oeDXB4bwmDM2/r1ndl14AG/2DUntdqH7qmpvdemJKwb3R97/QEw==",
             "license": "BSD-3-Clause",
             "dependencies": {
                 "@es-joy/jsdoccomment": "~0.49.0",
diff --git a/modules/ags/config/package.json b/modules/ags/config/package.json
index b2a29c65..784df050 100644
--- a/modules/ags/config/package.json
+++ b/modules/ags/config/package.json
@@ -4,10 +4,10 @@
     "main": "app.ts",
     "dependencies": {
         "astal": "https://gitpkg.vercel.app/Aylur/astal/lang/gjs/src?dc0e5d37abe9424c53dcbd2506a4886ffee6296e",
-        "@eslint/js": "9.22.0",
+        "@eslint/js": "9.23.0",
         "@stylistic/eslint-plugin": "4.2.0",
-        "eslint": "9.22.0",
-        "eslint-plugin-jsdoc": "50.6.8",
+        "eslint": "9.23.0",
+        "eslint-plugin-jsdoc": "50.6.9",
         "fzf": "0.5.2",
         "jiti": "2.4.2",
         "typescript-eslint": "8.27.0"
diff --git a/scopedPackages/lovelace-components/custom-sidebar/default.nix b/scopedPackages/lovelace-components/custom-sidebar/default.nix
index 924fc425..e742cec1 100644
--- a/scopedPackages/lovelace-components/custom-sidebar/default.nix
+++ b/scopedPackages/lovelace-components/custom-sidebar/default.nix
@@ -35,7 +35,7 @@ in
 
     pnpmDeps = pnpm.fetchDeps {
       inherit (finalAttrs) pname version src;
-      hash = "sha256-Hnnci5auqSXQUbJUWr0g0o37SYvZm/5TpvrKEDcfWUE=";
+      hash = "sha256-ML+/XQykBG6VjIgxkeKgnLVcvNZNGVOeHRU/vhYI178=";
     };
 
     passthru.updateScript = concatTextFile {