diff --git a/apps/config/package-lock.json b/apps/config/package-lock.json
index 017c88c4..ea74a86e 100644
--- a/apps/config/package-lock.json
+++ b/apps/config/package-lock.json
@@ -8,13 +8,13 @@
             "name": "eslint-conf",
             "version": "0.0.0",
             "dependencies": {
-                "@eslint/js": "9.23.0",
+                "@eslint/js": "9.24.0",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.23.0",
+                "eslint": "9.24.0",
                 "eslint-plugin-jsdoc": "50.6.9",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
-                "typescript": "5.8.2",
+                "typescript": "5.8.3",
                 "typescript-eslint": "8.29.0"
             }
         },
@@ -72,9 +72,9 @@
             }
         },
         "node_modules/@eslint/config-array": {
-            "version": "0.19.2",
-            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz",
-            "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==",
+            "version": "0.20.0",
+            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
+            "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@eslint/object-schema": "^2.1.6",
@@ -174,9 +174,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.23.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
-            "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
+            "version": "9.24.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
+            "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -729,18 +729,18 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.23.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
-            "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
+            "version": "9.24.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
+            "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
-                "@eslint/config-array": "^0.19.2",
+                "@eslint/config-array": "^0.20.0",
                 "@eslint/config-helpers": "^0.2.0",
                 "@eslint/core": "^0.12.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.23.0",
+                "@eslint/js": "9.24.0",
                 "@eslint/plugin-kit": "^0.2.7",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
@@ -1646,9 +1646,9 @@
             }
         },
         "node_modules/typescript": {
-            "version": "5.8.2",
-            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
-            "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
+            "version": "5.8.3",
+            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+            "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
             "license": "Apache-2.0",
             "bin": {
                 "tsc": "bin/tsc",
diff --git a/apps/config/package.json b/apps/config/package.json
index 106d0ef2..5c4d1aee 100644
--- a/apps/config/package.json
+++ b/apps/config/package.json
@@ -4,13 +4,13 @@
     "type": "module",
     "exports": "./index.ts",
     "dependencies": {
-        "@eslint/js": "9.23.0",
+        "@eslint/js": "9.24.0",
         "@stylistic/eslint-plugin": "4.2.0",
-        "eslint": "9.23.0",
+        "eslint": "9.24.0",
         "eslint-plugin-jsdoc": "50.6.9",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
-        "typescript": "5.8.2",
+        "typescript": "5.8.3",
         "typescript-eslint": "8.29.0"
     }
 }
diff --git a/apps/extract-subs/default.nix b/apps/extract-subs/default.nix
index d291f450..21704cab 100644
--- a/apps/extract-subs/default.nix
+++ b/apps/extract-subs/default.nix
@@ -5,7 +5,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-qGXPMU8tJCnvCDv+nkfAJw4cq6gKn2/BUX0WMtBb8wc=";
+  npmDepsHash = "sha256-IM3zI8BvAXobG6lfkQBt116lzo+2UUfnZdIaXMf5oQk=";
 
   runtimeInputs = [
     ffmpeg-full
diff --git a/apps/extract-subs/package-lock.json b/apps/extract-subs/package-lock.json
index 2ce26e3a..485ebdce 100644
--- a/apps/extract-subs/package-lock.json
+++ b/apps/extract-subs/package-lock.json
@@ -11,10 +11,10 @@
                 "@types/fluent-ffmpeg": "2.1.27",
                 "@types/node": "22.14.0",
                 "esbuild": "0.25.2",
-                "eslint": "9.23.0",
+                "eslint": "9.24.0",
                 "fluent-ffmpeg": "2.1.3",
                 "jiti": "2.4.2",
-                "typescript": "5.8.2"
+                "typescript": "5.8.3"
             },
             "bin": {
                 "extract-subs": "out/bin/app.cjs"
@@ -478,9 +478,9 @@
             }
         },
         "node_modules/@eslint/config-array": {
-            "version": "0.19.2",
-            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz",
-            "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==",
+            "version": "0.20.0",
+            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
+            "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@eslint/object-schema": "^2.1.6",
@@ -536,9 +536,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.23.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
-            "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
+            "version": "9.24.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
+            "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -887,18 +887,18 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.23.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
-            "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
+            "version": "9.24.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
+            "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
-                "@eslint/config-array": "^0.19.2",
+                "@eslint/config-array": "^0.20.0",
                 "@eslint/config-helpers": "^0.2.0",
                 "@eslint/core": "^0.12.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.23.0",
+                "@eslint/js": "9.24.0",
                 "@eslint/plugin-kit": "^0.2.7",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
@@ -1489,9 +1489,9 @@
             }
         },
         "node_modules/typescript": {
-            "version": "5.8.2",
-            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
-            "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
+            "version": "5.8.3",
+            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+            "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
             "license": "Apache-2.0",
             "bin": {
                 "tsc": "bin/tsc",
diff --git a/apps/extract-subs/package.json b/apps/extract-subs/package.json
index c17a2ce4..8550e5fa 100644
--- a/apps/extract-subs/package.json
+++ b/apps/extract-subs/package.json
@@ -11,9 +11,9 @@
         "fluent-ffmpeg": "2.1.3",
         "@types/node": "22.14.0",
         "esbuild": "0.25.2",
-        "eslint": "9.23.0",
+        "eslint": "9.24.0",
         "jiti": "2.4.2",
-        "typescript": "5.8.2"
+        "typescript": "5.8.3"
     },
     "devDependencies": {
         "eslint-conf": "file:../config"
diff --git a/apps/list2series/default.nix b/apps/list2series/default.nix
index d9a5afb4..c483ff2d 100644
--- a/apps/list2series/default.nix
+++ b/apps/list2series/default.nix
@@ -1,7 +1,7 @@
 {buildApp, ...}:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-TXmob2BTSG6F02oi+2lRAFG115ItOOAXdnOjC2K37ec=";
+  npmDepsHash = "sha256-7KG3chQa9G7M/QDVpeQtLylsqyAe2Ns+nKS/kSIZM9g=";
 
   runtimeInputs = [];
 
diff --git a/apps/list2series/package-lock.json b/apps/list2series/package-lock.json
index e5cbb7ef..e355075d 100644
--- a/apps/list2series/package-lock.json
+++ b/apps/list2series/package-lock.json
@@ -11,10 +11,10 @@
                 "@types/node": "22.14.0",
                 "axios": "1.8.4",
                 "esbuild": "0.25.2",
-                "eslint": "9.23.0",
+                "eslint": "9.24.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
-                "typescript": "5.8.2"
+                "typescript": "5.8.3"
             },
             "bin": {
                 "list2series": "out/bin/app.cjs"
@@ -28,13 +28,13 @@
             "version": "0.0.0",
             "dev": true,
             "dependencies": {
-                "@eslint/js": "9.23.0",
+                "@eslint/js": "9.24.0",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.23.0",
+                "eslint": "9.24.0",
                 "eslint-plugin-jsdoc": "50.6.9",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
-                "typescript": "5.8.2",
+                "typescript": "5.8.3",
                 "typescript-eslint": "8.29.0"
             }
         },
@@ -478,9 +478,9 @@
             }
         },
         "node_modules/@eslint/config-array": {
-            "version": "0.19.2",
-            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz",
-            "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==",
+            "version": "0.20.0",
+            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
+            "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@eslint/object-schema": "^2.1.6",
@@ -536,9 +536,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.23.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
-            "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
+            "version": "9.24.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
+            "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -989,18 +989,18 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.23.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
-            "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
+            "version": "9.24.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
+            "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
-                "@eslint/config-array": "^0.19.2",
+                "@eslint/config-array": "^0.20.0",
                 "@eslint/config-helpers": "^0.2.0",
                 "@eslint/core": "^0.12.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.23.0",
+                "@eslint/js": "9.24.0",
                 "@eslint/plugin-kit": "^0.2.7",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
@@ -1757,9 +1757,9 @@
             }
         },
         "node_modules/typescript": {
-            "version": "5.8.2",
-            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
-            "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
+            "version": "5.8.3",
+            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+            "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
             "license": "Apache-2.0",
             "bin": {
                 "tsc": "bin/tsc",
diff --git a/apps/list2series/package.json b/apps/list2series/package.json
index 1161e45c..1d1f0246 100644
--- a/apps/list2series/package.json
+++ b/apps/list2series/package.json
@@ -10,10 +10,10 @@
         "@types/node": "22.14.0",
         "axios": "1.8.4",
         "esbuild": "0.25.2",
-        "eslint": "9.23.0",
+        "eslint": "9.24.0",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
-        "typescript": "5.8.2"
+        "typescript": "5.8.3"
     },
     "devDependencies": {
         "eslint-conf": "file:../config"
diff --git a/apps/mc-mods/default.nix b/apps/mc-mods/default.nix
index ccce39e6..c30ff25c 100644
--- a/apps/mc-mods/default.nix
+++ b/apps/mc-mods/default.nix
@@ -5,7 +5,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-85bgLIZVAk4XiVQtgN6Mlj+IdKy8+KN8BBFxu+qchpw=";
+  npmDepsHash = "sha256-PvDGyHwn7zpaQ0q9pxVXgyfyzB93U8KMKBJp+Wclv4w=";
 
   runtimeInputs = [
     nodejs_latest
diff --git a/apps/mc-mods/package-lock.json b/apps/mc-mods/package-lock.json
index 3bd05d24..b2659388 100644
--- a/apps/mc-mods/package-lock.json
+++ b/apps/mc-mods/package-lock.json
@@ -10,10 +10,10 @@
             "dependencies": {
                 "@types/node": "22.14.0",
                 "esbuild": "0.25.2",
-                "eslint": "9.23.0",
+                "eslint": "9.24.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
-                "typescript": "5.8.2"
+                "typescript": "5.8.3"
             },
             "bin": {
                 "mc-mods": "out/bin/app.cjs"
@@ -27,13 +27,13 @@
             "version": "0.0.0",
             "dev": true,
             "dependencies": {
-                "@eslint/js": "9.23.0",
+                "@eslint/js": "9.24.0",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.23.0",
+                "eslint": "9.24.0",
                 "eslint-plugin-jsdoc": "50.6.9",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
-                "typescript": "5.8.2",
+                "typescript": "5.8.3",
                 "typescript-eslint": "8.29.0"
             }
         },
@@ -477,9 +477,9 @@
             }
         },
         "node_modules/@eslint/config-array": {
-            "version": "0.19.2",
-            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz",
-            "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==",
+            "version": "0.20.0",
+            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
+            "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@eslint/object-schema": "^2.1.6",
@@ -535,9 +535,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.23.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
-            "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
+            "version": "9.24.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
+            "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -878,18 +878,18 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.23.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
-            "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
+            "version": "9.24.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
+            "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
-                "@eslint/config-array": "^0.19.2",
+                "@eslint/config-array": "^0.20.0",
                 "@eslint/config-helpers": "^0.2.0",
                 "@eslint/core": "^0.12.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.23.0",
+                "@eslint/js": "9.24.0",
                 "@eslint/plugin-kit": "^0.2.7",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
@@ -1478,9 +1478,9 @@
             }
         },
         "node_modules/typescript": {
-            "version": "5.8.2",
-            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
-            "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
+            "version": "5.8.3",
+            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+            "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
             "license": "Apache-2.0",
             "bin": {
                 "tsc": "bin/tsc",
diff --git a/apps/mc-mods/package.json b/apps/mc-mods/package.json
index acf9df3e..3b588e3c 100644
--- a/apps/mc-mods/package.json
+++ b/apps/mc-mods/package.json
@@ -9,10 +9,10 @@
     "dependencies": {
         "@types/node": "22.14.0",
         "esbuild": "0.25.2",
-        "eslint": "9.23.0",
+        "eslint": "9.24.0",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
-        "typescript": "5.8.2"
+        "typescript": "5.8.3"
     },
     "devDependencies": {
         "eslint-conf": "file:../config"
diff --git a/apps/pin-inputs/default.nix b/apps/pin-inputs/default.nix
index cfb1248b..744377c0 100644
--- a/apps/pin-inputs/default.nix
+++ b/apps/pin-inputs/default.nix
@@ -1,7 +1,7 @@
 {buildApp, ...}:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-8reCDpSUbubvOD9u9DwGOXHmN2kEWVjNSdCIV6hJxxg=";
+  npmDepsHash = "sha256-BUx0PwxhNlUAbPmjmgU25AIskqzPM3tgIHhuoV7d4fQ=";
 
   runtimeInputs = [];
 
diff --git a/apps/pin-inputs/package-lock.json b/apps/pin-inputs/package-lock.json
index e21ce199..66e3fcdc 100644
--- a/apps/pin-inputs/package-lock.json
+++ b/apps/pin-inputs/package-lock.json
@@ -10,10 +10,10 @@
             "dependencies": {
                 "@types/node": "22.14.0",
                 "esbuild": "0.25.2",
-                "eslint": "9.23.0",
+                "eslint": "9.24.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
-                "typescript": "5.8.2"
+                "typescript": "5.8.3"
             },
             "bin": {
                 "pin-inputs": "out/bin/app.cjs"
@@ -27,13 +27,13 @@
             "version": "0.0.0",
             "dev": true,
             "dependencies": {
-                "@eslint/js": "9.23.0",
+                "@eslint/js": "9.24.0",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.23.0",
+                "eslint": "9.24.0",
                 "eslint-plugin-jsdoc": "50.6.9",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
-                "typescript": "5.8.2",
+                "typescript": "5.8.3",
                 "typescript-eslint": "8.29.0"
             }
         },
@@ -477,9 +477,9 @@
             }
         },
         "node_modules/@eslint/config-array": {
-            "version": "0.19.2",
-            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz",
-            "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==",
+            "version": "0.20.0",
+            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
+            "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@eslint/object-schema": "^2.1.6",
@@ -535,9 +535,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.23.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
-            "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
+            "version": "9.24.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
+            "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -878,18 +878,18 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.23.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
-            "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
+            "version": "9.24.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
+            "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
-                "@eslint/config-array": "^0.19.2",
+                "@eslint/config-array": "^0.20.0",
                 "@eslint/config-helpers": "^0.2.0",
                 "@eslint/core": "^0.12.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.23.0",
+                "@eslint/js": "9.24.0",
                 "@eslint/plugin-kit": "^0.2.7",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
@@ -1478,9 +1478,9 @@
             }
         },
         "node_modules/typescript": {
-            "version": "5.8.2",
-            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
-            "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
+            "version": "5.8.3",
+            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+            "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
             "license": "Apache-2.0",
             "bin": {
                 "tsc": "bin/tsc",
diff --git a/apps/pin-inputs/package.json b/apps/pin-inputs/package.json
index 5eb94b35..9ddb7623 100644
--- a/apps/pin-inputs/package.json
+++ b/apps/pin-inputs/package.json
@@ -9,10 +9,10 @@
     "dependencies": {
         "@types/node": "22.14.0",
         "esbuild": "0.25.2",
-        "eslint": "9.23.0",
+        "eslint": "9.24.0",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
-        "typescript": "5.8.2"
+        "typescript": "5.8.3"
     },
     "devDependencies": {
         "eslint-conf": "file:../config"
diff --git a/apps/update-sources/default.nix b/apps/update-sources/default.nix
index 3d0184d6..b1f14ce8 100644
--- a/apps/update-sources/default.nix
+++ b/apps/update-sources/default.nix
@@ -12,7 +12,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-hcT7Woy/n7zxAVIiaKIMYFIMUAZJ1/Yx1F/CHiD8g/s=";
+  npmDepsHash = "sha256-QxqzAuIF5Q54aBJ57Zhwim34VZnhiC2aDItFQADUfr0=";
 
   runtimeInputs = [
     curl
diff --git a/apps/update-sources/package-lock.json b/apps/update-sources/package-lock.json
index 8c7b84dd..7ec50f35 100644
--- a/apps/update-sources/package-lock.json
+++ b/apps/update-sources/package-lock.json
@@ -10,10 +10,10 @@
             "dependencies": {
                 "@types/node": "22.14.0",
                 "esbuild": "0.25.2",
-                "eslint": "9.23.0",
+                "eslint": "9.24.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
-                "typescript": "5.8.2"
+                "typescript": "5.8.3"
             },
             "bin": {
                 "update-sources": "out/bin/app.cjs"
@@ -477,9 +477,9 @@
             }
         },
         "node_modules/@eslint/config-array": {
-            "version": "0.19.2",
-            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz",
-            "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==",
+            "version": "0.20.0",
+            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
+            "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@eslint/object-schema": "^2.1.6",
@@ -535,9 +535,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.23.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
-            "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
+            "version": "9.24.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
+            "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -878,18 +878,18 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.23.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
-            "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
+            "version": "9.24.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
+            "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
-                "@eslint/config-array": "^0.19.2",
+                "@eslint/config-array": "^0.20.0",
                 "@eslint/config-helpers": "^0.2.0",
                 "@eslint/core": "^0.12.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.23.0",
+                "@eslint/js": "9.24.0",
                 "@eslint/plugin-kit": "^0.2.7",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
@@ -1478,9 +1478,9 @@
             }
         },
         "node_modules/typescript": {
-            "version": "5.8.2",
-            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
-            "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
+            "version": "5.8.3",
+            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+            "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
             "license": "Apache-2.0",
             "bin": {
                 "tsc": "bin/tsc",
diff --git a/apps/update-sources/package.json b/apps/update-sources/package.json
index 89b8821d..e97bc4df 100644
--- a/apps/update-sources/package.json
+++ b/apps/update-sources/package.json
@@ -9,10 +9,10 @@
     "dependencies": {
         "@types/node": "22.14.0",
         "esbuild": "0.25.2",
-        "eslint": "9.23.0",
+        "eslint": "9.24.0",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
-        "typescript": "5.8.2"
+        "typescript": "5.8.3"
     },
     "devDependencies": {
         "eslint-conf": "file:../config"
diff --git a/configurations/nos/modules/docker/media/sonarr/images/sonarr.nix b/configurations/nos/modules/docker/media/sonarr/images/sonarr.nix
index a0b4e59a..74fbddc2 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:aa566541ea012f41dd0eedc8bbc67910456713b750d1ace663950ce934269036";
-  hash = "sha256-BD49AKXvqbqI/xx35VWx8mZ03Jvk1Af8T9I52AHoQ1c=";
+  imageDigest = "sha256:7342ef32dd9cd6d13638765cfb8034edd4c80b0584f427159fd7f5ddeef5399d";
+  hash = "sha256-BO/g6heudVKeIj/evjnFzFw2vyLaKZs6DMYGgdkMUtI=";
   finalImageName = imageName;
   finalImageTag = "latest";
 }
diff --git a/flake.lock b/flake.lock
index f4f65baa..d486e17f 100644
--- a/flake.lock
+++ b/flake.lock
@@ -402,11 +402,11 @@
     "gpu-screen-recorder-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1743767593,
-        "narHash": "sha256-yJPNZpAW9vr1PGlgosauo8nztZ3Ef8he/T4fdMnaT0k=",
+        "lastModified": 1743803776,
+        "narHash": "sha256-NxRCdvzPklx6fBgYpdBk6yFXf1Z1i09oRCu2/KTLOWI=",
         "ref": "refs/heads/master",
-        "rev": "4e614a18bc8268f72b290a67b66fdc22cc50643d",
-        "revCount": 1054,
+        "rev": "01040796ee93d342622b258c2668ad7ba9e989bb",
+        "revCount": 1058,
         "type": "git",
         "url": "https://repo.dec05eba.com/gpu-screen-recorder"
       },
@@ -461,11 +461,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1743788974,
-        "narHash": "sha256-2LeVyQZI2wTkSzMLvnN/kJjXVWp4HCVUoq17Bv8TNTk=",
+        "lastModified": 1743869639,
+        "narHash": "sha256-Xhe3whfRW/Ay05z9m1EZ1/AkbV1yo0tm1CbgjtCi4rQ=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "0f5908daf890c3d7e7052bef1d6deb0f2710aaa1",
+        "rev": "d094c6763c6ddb860580e7d3b4201f8f496a6836",
         "type": "github"
       },
       "original": {
@@ -577,11 +577,11 @@
         "xdph": "xdph"
       },
       "locked": {
-        "lastModified": 1743703735,
-        "narHash": "sha256-xcxT/1X0quzovhfLkz9UL8nt4QGnoi8uNHGUl26x2eQ=",
+        "lastModified": 1743877722,
+        "narHash": "sha256-UUj8cuhmGfE8RWYVTO5wQQoP5480SD38RNY39osobI8=",
         "owner": "hyprwm",
         "repo": "Hyprland",
-        "rev": "ff97d18c4c61ae14f8f3b80178e6b72c8a4b7901",
+        "rev": "ed05f14300adecfa2c289d2100a00ca60da72992",
         "type": "github"
       },
       "original": {
@@ -603,11 +603,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1743339740,
-        "narHash": "sha256-G6a7R/gb1xH0yI2uevTmDpxZf6rvMh1lOu0gYrqVu5U=",
+        "lastModified": 1743884513,
+        "narHash": "sha256-s/Wrn1A/DavCjNdmlIJayaMMeQFpURtf5xl+P5HEFBI=",
         "owner": "hyprwm",
         "repo": "hyprland-plugins",
-        "rev": "6dca4ece21864e329394b81cfc767778089097e2",
+        "rev": "cef1854a542f6d121817a33fd6a3611d59d3e0af",
         "type": "github"
       },
       "original": {
@@ -837,11 +837,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1743660830,
-        "narHash": "sha256-ezJqPIuB25iMJeugwHKWnB1DjMvrdpkrPxE3TCULjGk=",
+        "lastModified": 1743879910,
+        "narHash": "sha256-jAr345BODeDluX6DfO3TdY7pB77olVOcYFYjxz6rPxo=",
         "owner": "Jovian-Experiments",
         "repo": "Jovian-NixOS",
-        "rev": "c7ade1c8fe2bdb70d38b3b9a97b874dcaf33b755",
+        "rev": "96a7fbb4a892696ff89d3d42fc743ab5d6714222",
         "type": "github"
       },
       "original": {
@@ -1112,11 +1112,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1743779076,
-        "narHash": "sha256-RhIEwFHGqdxXsCSbhp4DicOlMSldthNRhTn2yLdTc4g=",
+        "lastModified": 1743836696,
+        "narHash": "sha256-qd5SlOzyBHk3BGtL3sBGw22JonJ9Go3P32O1YURRlNk=",
         "owner": "Mic92",
         "repo": "nix-fast-build",
-        "rev": "65f8b77cb4c212749885bc79bafaec9b9d5c33e6",
+        "rev": "2fadd8696095bde39531e3815deea894a00b9b4a",
         "type": "github"
       },
       "original": {
@@ -1257,11 +1257,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1743761374,
-        "narHash": "sha256-Zzhd3KRkG2cR4I3ExSJr4V1RV8d7TomaBEoT9g9hbYg=",
+        "lastModified": 1743833482,
+        "narHash": "sha256-tUV7MhS/JFOEp3JQxiyvo8K3aS5zP5jcF/Buk57yWDo=",
         "owner": "kaylorben",
         "repo": "nixcord",
-        "rev": "48e192d4592a6c33e596fdc127e5025bee53bf3d",
+        "rev": "2903d897d5939324a758bd3f2cee1fbcb118b5d1",
         "type": "github"
       },
       "original": {
@@ -1307,11 +1307,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1742548347,
-        "narHash": "sha256-ye/0fDogGzkOA+lwbHVHg+rwNZQsUiudcSnp82PpWR0=",
+        "lastModified": 1743885694,
+        "narHash": "sha256-ZBdhtPgncLE5ipDiND6wgirsV8XG45hJGpC4Bn5kOBc=",
         "owner": "matt1432",
         "repo": "nixos-jellyfin",
-        "rev": "c067c4c74b6579c38dc4f205b74a801cbea12019",
+        "rev": "f44bfb41d40e9038116fa7f6dabf34eac6845bd9",
         "type": "github"
       },
       "original": {
@@ -1825,11 +1825,11 @@
     "tuya-local-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1743780798,
-        "narHash": "sha256-G8dhBhx74kA06e2crCLnIrIX49Rga0kpTgQ8/qSIp3o=",
+        "lastModified": 1743863728,
+        "narHash": "sha256-iVuEPpt/fQw6I7B4FfEVP/mDOK/bwfMY3QgImsp6wK4=",
         "owner": "make-all",
         "repo": "tuya-local",
-        "rev": "58815f19a48a4b0c566420e4e35321c5389f5140",
+        "rev": "11304d6acd978ffd433ca8a26959c79f50fd9134",
         "type": "github"
       },
       "original": {
diff --git a/modules/ags/config/default.nix b/modules/ags/config/default.nix
index 30a18b50..9b1ddb77 100644
--- a/modules/ags/config/default.nix
+++ b/modules/ags/config/default.nix
@@ -1,3 +1,3 @@
 {
-  npmDepsHash = "sha256-qWm0L/i4yvkt0c7HNlDxidT7AGHsB+8gwWxevKSeaFE=";
+  npmDepsHash = "sha256-UBiN2T9jGoRNzNabISdPW4QlcCO8DxVTw9XdLpOktoI=";
 }
diff --git a/modules/ags/config/package-lock.json b/modules/ags/config/package-lock.json
index 36d6a7d4..388bd5f9 100644
--- a/modules/ags/config/package-lock.json
+++ b/modules/ags/config/package-lock.json
@@ -8,10 +8,10 @@
             "name": "ags",
             "version": "0.0.0",
             "dependencies": {
-                "@eslint/js": "9.23.0",
+                "@eslint/js": "9.24.0",
                 "@stylistic/eslint-plugin": "4.2.0",
                 "astal": "https://gitpkg.vercel.app/Aylur/astal/lang/gjs/src?dc0e5d37abe9424c53dcbd2506a4886ffee6296e",
-                "eslint": "9.23.0",
+                "eslint": "9.24.0",
                 "eslint-plugin-jsdoc": "50.6.9",
                 "fzf": "0.5.2",
                 "jiti": "2.4.2",
@@ -72,9 +72,9 @@
             }
         },
         "node_modules/@eslint/config-array": {
-            "version": "0.19.2",
-            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz",
-            "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==",
+            "version": "0.20.0",
+            "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz",
+            "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@eslint/object-schema": "^2.1.6",
@@ -174,9 +174,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.23.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz",
-            "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==",
+            "version": "9.24.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
+            "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -740,18 +740,18 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.23.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz",
-            "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==",
+            "version": "9.24.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
+            "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
-                "@eslint/config-array": "^0.19.2",
+                "@eslint/config-array": "^0.20.0",
                 "@eslint/config-helpers": "^0.2.0",
                 "@eslint/core": "^0.12.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.23.0",
+                "@eslint/js": "9.24.0",
                 "@eslint/plugin-kit": "^0.2.7",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
@@ -1640,9 +1640,9 @@
             }
         },
         "node_modules/typescript": {
-            "version": "5.8.2",
-            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
-            "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
+            "version": "5.8.3",
+            "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
+            "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
             "license": "Apache-2.0",
             "peer": true,
             "bin": {
diff --git a/modules/ags/config/package.json b/modules/ags/config/package.json
index f8b4c473..22bed84c 100644
--- a/modules/ags/config/package.json
+++ b/modules/ags/config/package.json
@@ -4,9 +4,9 @@
     "main": "app.ts",
     "dependencies": {
         "astal": "https://gitpkg.vercel.app/Aylur/astal/lang/gjs/src?dc0e5d37abe9424c53dcbd2506a4886ffee6296e",
-        "@eslint/js": "9.23.0",
+        "@eslint/js": "9.24.0",
         "@stylistic/eslint-plugin": "4.2.0",
-        "eslint": "9.23.0",
+        "eslint": "9.24.0",
         "eslint-plugin-jsdoc": "50.6.9",
         "fzf": "0.5.2",
         "jiti": "2.4.2",
diff --git a/packages/gpu-screen-recorder/generic.nix b/packages/gpu-screen-recorder/generic.nix
index d28d3292..745cefb7 100644
--- a/packages/gpu-screen-recorder/generic.nix
+++ b/packages/gpu-screen-recorder/generic.nix
@@ -1,14 +1,14 @@
 {
   # params
   pname,
-  isKmsServer ? false,
-  gpu-screen-recorder-src,
   description,
+  isKmsServer ? false,
   # nix build inputs
   lib,
   stdenv,
   addDriverRunpath,
   makeWrapper,
+  gpu-screen-recorder-src,
   # deps
   dbus,
   ffmpeg,
@@ -22,10 +22,11 @@
   pkg-config,
   vulkan-headers,
   wayland,
+  wayland-scanner,
   xorg,
   ...
 }: let
-  inherit (lib) makeLibraryPath;
+  inherit (lib) makeLibraryPath optionalString;
   inherit (builtins) fromTOML readFile;
 
   tag =
@@ -39,27 +40,28 @@ in
 
     src = gpu-screen-recorder-src;
 
-    # Get rid of useless warning
+    # Get rid of useless warning due to how I install the package
     postPatch = ''
       sed -i 's/.*gsr-kms-server is not installed in the same directory.*//' ./kms/client/kms_client.c
     '';
 
     nativeBuildInputs = [
-      pkg-config
       makeWrapper
       meson
       ninja
+      pkg-config
     ];
 
     buildInputs = [
       dbus
-      libpulseaudio
-      pipewire
       ffmpeg
-      wayland
       libdrm
+      libpulseaudio
       libva
+      pipewire
       vulkan-headers
+      wayland
+      wayland-scanner
       xorg.libXcomposite
       xorg.libXdamage
       xorg.libXi
@@ -72,19 +74,22 @@ in
       "-Dsystemd=false"
     ];
 
-    fixupPhase = ''
-      runHook preFixup
+    fixupPhase =
+      optionalString (!isKmsServer)
+      # bash
+      ''
+        runHook preFixup
 
-      wrapProgram $out/bin/gpu-screen-recorder \
-        --prefix LD_LIBRARY_PATH : "${
-        makeLibraryPath [
-          addDriverRunpath.driverLink
-          libglvnd
-        ]
-      }"
+        wrapProgram $out/bin/gpu-screen-recorder \
+          --prefix LD_LIBRARY_PATH : "${
+          makeLibraryPath [
+            addDriverRunpath.driverLink
+            libglvnd
+          ]
+        }"
 
-      runHook postFixup
-    '';
+        runHook postFixup
+      '';
 
     # This is needed to force gsr to lookup kms in PATH
     # to get the security wrapper
@@ -94,7 +99,6 @@ in
         # bash
         ''
           rm $out/bin/gpu-screen-recorder
-          rm $out/bin/.gpu-screen-recorder-wrapped
         ''
       else
         # bash