diff --git a/apps/config/package-lock.json b/apps/config/package-lock.json
index c5e529ad..9ec7382b 100644
--- a/apps/config/package-lock.json
+++ b/apps/config/package-lock.json
@@ -8,9 +8,9 @@
             "name": "eslint-conf",
             "version": "0.0.0",
             "dependencies": {
-                "@eslint/js": "9.24.0",
+                "@eslint/js": "9.25.0",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.24.0",
+                "eslint": "9.25.0",
                 "eslint-plugin-jsdoc": "50.6.9",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
@@ -108,18 +108,18 @@
             }
         },
         "node_modules/@eslint/config-helpers": {
-            "version": "0.2.0",
-            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz",
-            "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==",
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz",
+            "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==",
             "license": "Apache-2.0",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             }
         },
         "node_modules/@eslint/core": {
-            "version": "0.12.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
-            "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
+            "version": "0.13.0",
+            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
+            "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@types/json-schema": "^7.0.15"
@@ -174,9 +174,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.24.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
-            "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
+            "version": "9.25.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
+            "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -192,12 +192,12 @@
             }
         },
         "node_modules/@eslint/plugin-kit": {
-            "version": "0.2.7",
-            "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz",
-            "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==",
+            "version": "0.2.8",
+            "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz",
+            "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@eslint/core": "^0.12.0",
+                "@eslint/core": "^0.13.0",
                 "levn": "^0.4.1"
             },
             "engines": {
@@ -729,19 +729,19 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.24.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
-            "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
+            "version": "9.25.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
+            "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
                 "@eslint/config-array": "^0.20.0",
-                "@eslint/config-helpers": "^0.2.0",
-                "@eslint/core": "^0.12.0",
+                "@eslint/config-helpers": "^0.2.1",
+                "@eslint/core": "^0.13.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.24.0",
-                "@eslint/plugin-kit": "^0.2.7",
+                "@eslint/js": "9.25.0",
+                "@eslint/plugin-kit": "^0.2.8",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
                 "@humanwhocodes/retry": "^0.4.2",
diff --git a/apps/config/package.json b/apps/config/package.json
index d2a4998c..81a117a8 100644
--- a/apps/config/package.json
+++ b/apps/config/package.json
@@ -4,9 +4,9 @@
     "type": "module",
     "exports": "./index.ts",
     "dependencies": {
-        "@eslint/js": "9.24.0",
+        "@eslint/js": "9.25.0",
         "@stylistic/eslint-plugin": "4.2.0",
-        "eslint": "9.24.0",
+        "eslint": "9.25.0",
         "eslint-plugin-jsdoc": "50.6.9",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
diff --git a/apps/extract-subs/default.nix b/apps/extract-subs/default.nix
index 90bfce7e..b2d8795f 100644
--- a/apps/extract-subs/default.nix
+++ b/apps/extract-subs/default.nix
@@ -5,7 +5,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-VJFYkiQUjwYaN43w+plNXPXqyZteSnmv/h6GQ5wl5DQ=";
+  npmDepsHash = "sha256-r1Osgev7iN6qVVtNtY99ShMIVExM56vPAnHt0B53dOU=";
 
   runtimeInputs = [
     ffmpeg-full
diff --git a/apps/extract-subs/package-lock.json b/apps/extract-subs/package-lock.json
index 94f3af51..8c4b57b1 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.14.1",
                 "esbuild": "0.25.2",
-                "eslint": "9.24.0",
+                "eslint": "9.25.0",
                 "fluent-ffmpeg": "2.1.3",
                 "jiti": "2.4.2",
                 "typescript": "5.8.3"
@@ -501,9 +501,9 @@
             }
         },
         "node_modules/@eslint/core": {
-            "version": "0.12.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
-            "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
+            "version": "0.13.0",
+            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
+            "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@types/json-schema": "^7.0.15"
@@ -536,9 +536,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.24.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
-            "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
+            "version": "9.25.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
+            "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -566,18 +566,6 @@
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             }
         },
-        "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
-            "version": "0.13.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
-            "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@types/json-schema": "^7.0.15"
-            },
-            "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-            }
-        },
         "node_modules/@humanfs/core": {
             "version": "0.19.1",
             "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
@@ -887,19 +875,19 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.24.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
-            "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
+            "version": "9.25.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
+            "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
                 "@eslint/config-array": "^0.20.0",
-                "@eslint/config-helpers": "^0.2.0",
-                "@eslint/core": "^0.12.0",
+                "@eslint/config-helpers": "^0.2.1",
+                "@eslint/core": "^0.13.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.24.0",
-                "@eslint/plugin-kit": "^0.2.7",
+                "@eslint/js": "9.25.0",
+                "@eslint/plugin-kit": "^0.2.8",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
                 "@humanwhocodes/retry": "^0.4.2",
diff --git a/apps/extract-subs/package.json b/apps/extract-subs/package.json
index 8239212b..72f349c3 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.14.1",
         "esbuild": "0.25.2",
-        "eslint": "9.24.0",
+        "eslint": "9.25.0",
         "jiti": "2.4.2",
         "typescript": "5.8.3"
     },
diff --git a/apps/list2series/default.nix b/apps/list2series/default.nix
index a517cc04..3663ec97 100644
--- a/apps/list2series/default.nix
+++ b/apps/list2series/default.nix
@@ -1,7 +1,7 @@
 {buildApp, ...}:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-uqLLmVbpHM5MIGNlHeLYAhWBYaNDW4oRyGJ0azou1Es=";
+  npmDepsHash = "sha256-lFAf1jUqonnOtKqTi1rOX/2He0fA/uC3i09GS1ajDPE=";
 
   runtimeInputs = [];
 
diff --git a/apps/list2series/package-lock.json b/apps/list2series/package-lock.json
index 22317510..29a44b4d 100644
--- a/apps/list2series/package-lock.json
+++ b/apps/list2series/package-lock.json
@@ -11,7 +11,7 @@
                 "@types/node": "22.14.1",
                 "axios": "1.8.4",
                 "esbuild": "0.25.2",
-                "eslint": "9.24.0",
+                "eslint": "9.25.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3"
@@ -28,9 +28,9 @@
             "version": "0.0.0",
             "dev": true,
             "dependencies": {
-                "@eslint/js": "9.24.0",
+                "@eslint/js": "9.25.0",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.24.0",
+                "eslint": "9.25.0",
                 "eslint-plugin-jsdoc": "50.6.9",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
@@ -501,9 +501,9 @@
             }
         },
         "node_modules/@eslint/core": {
-            "version": "0.12.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
-            "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
+            "version": "0.13.0",
+            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
+            "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@types/json-schema": "^7.0.15"
@@ -536,9 +536,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.24.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
-            "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
+            "version": "9.25.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
+            "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -566,18 +566,6 @@
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             }
         },
-        "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
-            "version": "0.13.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
-            "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@types/json-schema": "^7.0.15"
-            },
-            "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-            }
-        },
         "node_modules/@humanfs/core": {
             "version": "0.19.1",
             "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
@@ -989,19 +977,19 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.24.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
-            "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
+            "version": "9.25.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
+            "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
                 "@eslint/config-array": "^0.20.0",
-                "@eslint/config-helpers": "^0.2.0",
-                "@eslint/core": "^0.12.0",
+                "@eslint/config-helpers": "^0.2.1",
+                "@eslint/core": "^0.13.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.24.0",
-                "@eslint/plugin-kit": "^0.2.7",
+                "@eslint/js": "9.25.0",
+                "@eslint/plugin-kit": "^0.2.8",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
                 "@humanwhocodes/retry": "^0.4.2",
@@ -1140,9 +1128,9 @@
             }
         },
         "node_modules/exsolve": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.4.tgz",
-            "integrity": "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==",
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz",
+            "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==",
             "license": "MIT"
         },
         "node_modules/fast-deep-equal": {
diff --git a/apps/list2series/package.json b/apps/list2series/package.json
index 44902b2e..296fb2e9 100644
--- a/apps/list2series/package.json
+++ b/apps/list2series/package.json
@@ -10,7 +10,7 @@
         "@types/node": "22.14.1",
         "axios": "1.8.4",
         "esbuild": "0.25.2",
-        "eslint": "9.24.0",
+        "eslint": "9.25.0",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.3"
diff --git a/apps/mc-mods/default.nix b/apps/mc-mods/default.nix
index b0ba0e08..3ace1134 100644
--- a/apps/mc-mods/default.nix
+++ b/apps/mc-mods/default.nix
@@ -5,7 +5,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-u4inCcNOTx6gf/e8a6/W/a1L5YmBPycAEG/Z46oaHRg=";
+  npmDepsHash = "sha256-s5c8hgdGPrYAIw0ov0Gn36vO1leLy4VfuWH9GmyqipE=";
 
   runtimeInputs = [
     nodejs_latest
diff --git a/apps/mc-mods/package-lock.json b/apps/mc-mods/package-lock.json
index 2e159b31..f617849b 100644
--- a/apps/mc-mods/package-lock.json
+++ b/apps/mc-mods/package-lock.json
@@ -10,7 +10,7 @@
             "dependencies": {
                 "@types/node": "22.14.1",
                 "esbuild": "0.25.2",
-                "eslint": "9.24.0",
+                "eslint": "9.25.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3"
@@ -27,9 +27,9 @@
             "version": "0.0.0",
             "dev": true,
             "dependencies": {
-                "@eslint/js": "9.24.0",
+                "@eslint/js": "9.25.0",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.24.0",
+                "eslint": "9.25.0",
                 "eslint-plugin-jsdoc": "50.6.9",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
@@ -500,9 +500,9 @@
             }
         },
         "node_modules/@eslint/core": {
-            "version": "0.12.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
-            "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
+            "version": "0.13.0",
+            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
+            "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@types/json-schema": "^7.0.15"
@@ -535,9 +535,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.24.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
-            "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
+            "version": "9.25.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
+            "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -565,18 +565,6 @@
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             }
         },
-        "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
-            "version": "0.13.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
-            "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@types/json-schema": "^7.0.15"
-            },
-            "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-            }
-        },
         "node_modules/@humanfs/core": {
             "version": "0.19.1",
             "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
@@ -878,19 +866,19 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.24.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
-            "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
+            "version": "9.25.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
+            "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
                 "@eslint/config-array": "^0.20.0",
-                "@eslint/config-helpers": "^0.2.0",
-                "@eslint/core": "^0.12.0",
+                "@eslint/config-helpers": "^0.2.1",
+                "@eslint/core": "^0.13.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.24.0",
-                "@eslint/plugin-kit": "^0.2.7",
+                "@eslint/js": "9.25.0",
+                "@eslint/plugin-kit": "^0.2.8",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
                 "@humanwhocodes/retry": "^0.4.2",
@@ -1029,9 +1017,9 @@
             }
         },
         "node_modules/exsolve": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.4.tgz",
-            "integrity": "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==",
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz",
+            "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==",
             "license": "MIT"
         },
         "node_modules/fast-deep-equal": {
diff --git a/apps/mc-mods/package.json b/apps/mc-mods/package.json
index 71abe828..a8f1d294 100644
--- a/apps/mc-mods/package.json
+++ b/apps/mc-mods/package.json
@@ -9,7 +9,7 @@
     "dependencies": {
         "@types/node": "22.14.1",
         "esbuild": "0.25.2",
-        "eslint": "9.24.0",
+        "eslint": "9.25.0",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.3"
diff --git a/apps/pin-inputs/default.nix b/apps/pin-inputs/default.nix
index c071a1de..4ce7b3ce 100644
--- a/apps/pin-inputs/default.nix
+++ b/apps/pin-inputs/default.nix
@@ -1,7 +1,7 @@
 {buildApp, ...}:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-oF5IFeBmtQ8ThhJtTcR1JuyWXU6zgCcqmKudi054E4w=";
+  npmDepsHash = "sha256-7siUjfZbkPZXCwrhWeg2NoThHdBtULJXueXr1+wGmuY=";
 
   runtimeInputs = [];
 
diff --git a/apps/pin-inputs/package-lock.json b/apps/pin-inputs/package-lock.json
index b6d7d13c..cdbd314a 100644
--- a/apps/pin-inputs/package-lock.json
+++ b/apps/pin-inputs/package-lock.json
@@ -10,7 +10,7 @@
             "dependencies": {
                 "@types/node": "22.14.1",
                 "esbuild": "0.25.2",
-                "eslint": "9.24.0",
+                "eslint": "9.25.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3"
@@ -27,9 +27,9 @@
             "version": "0.0.0",
             "dev": true,
             "dependencies": {
-                "@eslint/js": "9.24.0",
+                "@eslint/js": "9.25.0",
                 "@stylistic/eslint-plugin": "4.2.0",
-                "eslint": "9.24.0",
+                "eslint": "9.25.0",
                 "eslint-plugin-jsdoc": "50.6.9",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
@@ -500,9 +500,9 @@
             }
         },
         "node_modules/@eslint/core": {
-            "version": "0.12.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
-            "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
+            "version": "0.13.0",
+            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
+            "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@types/json-schema": "^7.0.15"
@@ -535,9 +535,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.24.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
-            "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
+            "version": "9.25.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
+            "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -565,18 +565,6 @@
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             }
         },
-        "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
-            "version": "0.13.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
-            "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@types/json-schema": "^7.0.15"
-            },
-            "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-            }
-        },
         "node_modules/@humanfs/core": {
             "version": "0.19.1",
             "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
@@ -878,19 +866,19 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.24.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
-            "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
+            "version": "9.25.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
+            "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
                 "@eslint/config-array": "^0.20.0",
-                "@eslint/config-helpers": "^0.2.0",
-                "@eslint/core": "^0.12.0",
+                "@eslint/config-helpers": "^0.2.1",
+                "@eslint/core": "^0.13.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.24.0",
-                "@eslint/plugin-kit": "^0.2.7",
+                "@eslint/js": "9.25.0",
+                "@eslint/plugin-kit": "^0.2.8",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
                 "@humanwhocodes/retry": "^0.4.2",
@@ -1029,9 +1017,9 @@
             }
         },
         "node_modules/exsolve": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.4.tgz",
-            "integrity": "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==",
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz",
+            "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==",
             "license": "MIT"
         },
         "node_modules/fast-deep-equal": {
diff --git a/apps/pin-inputs/package.json b/apps/pin-inputs/package.json
index 902a7fb4..9f710d3b 100644
--- a/apps/pin-inputs/package.json
+++ b/apps/pin-inputs/package.json
@@ -9,7 +9,7 @@
     "dependencies": {
         "@types/node": "22.14.1",
         "esbuild": "0.25.2",
-        "eslint": "9.24.0",
+        "eslint": "9.25.0",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.3"
diff --git a/apps/update-sources/default.nix b/apps/update-sources/default.nix
index 5e5f91a8..eaad2ad3 100644
--- a/apps/update-sources/default.nix
+++ b/apps/update-sources/default.nix
@@ -12,7 +12,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-f8jA2SwTbI+LgjoPm096cTSfGVrfA1oD2F3xC69vt6o=";
+  npmDepsHash = "sha256-JbU6ORPjn7VV+JEvrn9vqU3SDXzoX60pTETwA0R8F/c=";
 
   runtimeInputs = [
     curl
diff --git a/apps/update-sources/package-lock.json b/apps/update-sources/package-lock.json
index 68f305ae..d0302fba 100644
--- a/apps/update-sources/package-lock.json
+++ b/apps/update-sources/package-lock.json
@@ -10,7 +10,7 @@
             "dependencies": {
                 "@types/node": "22.14.1",
                 "esbuild": "0.25.2",
-                "eslint": "9.24.0",
+                "eslint": "9.25.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3"
@@ -500,9 +500,9 @@
             }
         },
         "node_modules/@eslint/core": {
-            "version": "0.12.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
-            "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
+            "version": "0.13.0",
+            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
+            "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@types/json-schema": "^7.0.15"
@@ -535,9 +535,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.24.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
-            "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
+            "version": "9.25.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
+            "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -565,18 +565,6 @@
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             }
         },
-        "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
-            "version": "0.13.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
-            "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@types/json-schema": "^7.0.15"
-            },
-            "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-            }
-        },
         "node_modules/@humanfs/core": {
             "version": "0.19.1",
             "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
@@ -878,19 +866,19 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.24.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
-            "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
+            "version": "9.25.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
+            "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
                 "@eslint/config-array": "^0.20.0",
-                "@eslint/config-helpers": "^0.2.0",
-                "@eslint/core": "^0.12.0",
+                "@eslint/config-helpers": "^0.2.1",
+                "@eslint/core": "^0.13.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.24.0",
-                "@eslint/plugin-kit": "^0.2.7",
+                "@eslint/js": "9.25.0",
+                "@eslint/plugin-kit": "^0.2.8",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
                 "@humanwhocodes/retry": "^0.4.2",
@@ -1029,9 +1017,9 @@
             }
         },
         "node_modules/exsolve": {
-            "version": "1.0.4",
-            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.4.tgz",
-            "integrity": "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==",
+            "version": "1.0.5",
+            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz",
+            "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==",
             "license": "MIT"
         },
         "node_modules/fast-deep-equal": {
diff --git a/apps/update-sources/package.json b/apps/update-sources/package.json
index 567650cd..a8d812a9 100644
--- a/apps/update-sources/package.json
+++ b/apps/update-sources/package.json
@@ -9,7 +9,7 @@
     "dependencies": {
         "@types/node": "22.14.1",
         "esbuild": "0.25.2",
-        "eslint": "9.24.0",
+        "eslint": "9.25.0",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.3"
diff --git a/configurations/cluster/modules/caddy/plugins.nix b/configurations/cluster/modules/caddy/plugins.nix
index bf912a7d..711f7a61 100644
--- a/configurations/cluster/modules/caddy/plugins.nix
+++ b/configurations/cluster/modules/caddy/plugins.nix
@@ -13,5 +13,5 @@
     };
   };
 
-  hash = "sha256-WAaPnp9+kjxjc2imzg19uLHZcBjcJ8XI5wvuMgH5vZc=";
+  hash = "sha256-ReEyZI9Jg85EhGrAebU2d5y+OFkkdJiJ3Fic5r4srjM=";
 }
diff --git a/configurations/nos/modules/homepage/default.nix b/configurations/nos/modules/homepage/default.nix
index 8cdc5b6b..998495b8 100644
--- a/configurations/nos/modules/homepage/default.nix
+++ b/configurations/nos/modules/homepage/default.nix
@@ -3,14 +3,13 @@
   pkgs,
   ...
 }: {
-  systemd.services.homepage-dashboard.environment.HOMEPAGE_ALLOWED_HOSTS = "lan.nelim.org";
-
   services.homepage-dashboard = {
     enable = true;
 
     package = pkgs.selfPackages.homepage;
 
     listenPort = 3020;
+    allowedHosts = "lan.nelim.org";
 
     environmentFile = config.sops.secrets.homepage.path;
 
diff --git a/flake.lock b/flake.lock
index 60d461e6..1007f310 100644
--- a/flake.lock
+++ b/flake.lock
@@ -402,11 +402,11 @@
     "gpu-screen-recorder-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1744680863,
-        "narHash": "sha256-nK92K11BPMkBfAGeqGxV6X4/KGe7K56ZPnrvwPyo7SU=",
+        "lastModified": 1744979475,
+        "narHash": "sha256-Y19KCSaectrCvXb66ghRwiTFBwBQrBm9xcv1PZUXPuY=",
         "ref": "refs/heads/master",
-        "rev": "1f3d28fc5c63e818c1ef483e725f0154eaa47fd6",
-        "revCount": 1064,
+        "rev": "a1c09a61af0b1e6cd172dd582c48fec6ebea81c8",
+        "revCount": 1065,
         "type": "git",
         "url": "https://repo.dec05eba.com/gpu-screen-recorder"
       },
@@ -461,11 +461,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1744663884,
-        "narHash": "sha256-a6QGaZMDM1miK8VWzAITsEPOdmLk+xTPyJSTjVs3WhI=",
+        "lastModified": 1745001336,
+        "narHash": "sha256-R4HuzrgYtOYBNmB3lfRxcieHEBO4uSfgHNz4MzWkZ5M=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "d5cdf55bd9f19a3debd55b6cb5d38f7831426265",
+        "rev": "fc09cb7aaadb70d6c4898654ffc872f0d2415df9",
         "type": "github"
       },
       "original": {
@@ -542,11 +542,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1744528518,
-        "narHash": "sha256-F3upSTM0XntGzO6VajVFLEEAJUHEKD4tUd7psn0+T0s=",
+        "lastModified": 1744930206,
+        "narHash": "sha256-LlkTIzJhpKPHcetX6VsbmPseGfiBfXcOET7iXZnYWD0=",
         "owner": "horriblename",
         "repo": "hyprgrass",
-        "rev": "5106f7e6857935aed04f579752095fdd2df4d3d1",
+        "rev": "11eaedb1222a914686d91546cb5765cf8ac32653",
         "type": "github"
       },
       "original": {
@@ -577,11 +577,11 @@
         "xdph": "xdph"
       },
       "locked": {
-        "lastModified": 1744646317,
-        "narHash": "sha256-Vs5vKsYOtUBdUyHZ9zmKZxhcEnwm9KM8LUhww44JKtE=",
+        "lastModified": 1744990762,
+        "narHash": "sha256-5ZiLp2Md7W1lri6+8pu2TSgurwLLeCoB4BPLQQkObSw=",
         "owner": "hyprwm",
         "repo": "Hyprland",
-        "rev": "8b7b169043de2a9d95f8505edb8b6576fac586fd",
+        "rev": "02f7da2bf23b75f097388b776143af5963b8e13b",
         "type": "github"
       },
       "original": {
@@ -603,16 +603,17 @@
         ]
       },
       "locked": {
-        "lastModified": 1743950622,
-        "narHash": "sha256-8qjDapcQeDqxQUIm5gA0x6XZtowV/14bOs3K0tCSMoU=",
+        "lastModified": 1744934395,
+        "narHash": "sha256-3PK27C3XcPoOkEIQnaPi3cdvh7XjIGqkcQ6MeZMvy2E=",
         "owner": "hyprwm",
         "repo": "hyprland-plugins",
-        "rev": "be6b9875dd5c586fb401d294bb98c31973849651",
+        "rev": "76de87aa975c2334ace0d798c92f268756e17731",
         "type": "github"
       },
       "original": {
         "owner": "hyprwm",
         "repo": "hyprland-plugins",
+        "rev": "76de87aa975c2334ace0d798c92f268756e17731",
         "type": "github"
       }
     },
@@ -837,11 +838,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1744648917,
-        "narHash": "sha256-xtBc0YMCP/x3+3iqnfdd4d9qEHvxQsGHamhhlegsGFE=",
+        "lastModified": 1744866383,
+        "narHash": "sha256-SOBI89WTS8qqrjysrE0+VsePe5JoOxtbnmFroJbHiAo=",
         "owner": "Jovian-Experiments",
         "repo": "Jovian-NixOS",
-        "rev": "66c4c9dccd26330ebb0e91aa6ba89ca8835dfdc5",
+        "rev": "36186806e1dc4c0e370d0080f9b838ff8b1d20a2",
         "type": "github"
       },
       "original": {
@@ -1112,11 +1113,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1744712683,
-        "narHash": "sha256-C6jHAgNi50A4yZS4YzsT4hY1b6FjVgkJb3DcglbeKXw=",
+        "lastModified": 1744962259,
+        "narHash": "sha256-qiczbsj5lRZc/f0jHxADD0M32hxlPbrhNhWz3zx3MBg=",
         "owner": "Mic92",
         "repo": "nix-fast-build",
-        "rev": "c2d972bed84323146535ac2e3e69e8a2d995eabd",
+        "rev": "188b1f5c400c2349b6c4a1d130dc893d2b29f60c",
         "type": "github"
       },
       "original": {
@@ -1283,11 +1284,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1744677735,
-        "narHash": "sha256-m4QVkKPSIleMeP3S3RErg6BbMylh8DGHLFpxSCdsN6Y=",
+        "lastModified": 1744850482,
+        "narHash": "sha256-0AfVLRrAFQQeLhCwa0YzWhKtSLVB4E0oB0MVVDTaW2w=",
         "owner": "kaylorben",
         "repo": "nixcord",
-        "rev": "a957c3403d0247bca3dbf78eaa7471947072e8eb",
+        "rev": "6f1450221c3a8fea3a1b49338b0b8deca96a30b5",
         "type": "github"
       },
       "original": {
@@ -1348,11 +1349,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1744463964,
-        "narHash": "sha256-LWqduOgLHCFxiTNYi3Uj5Lgz0SR+Xhw3kr/3Xd0GPTM=",
+        "lastModified": 1744932701,
+        "narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "2631b0b7abcea6e640ce31cd78ea58910d31e650",
+        "rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef",
         "type": "github"
       },
       "original": {
@@ -1820,11 +1821,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1744707583,
-        "narHash": "sha256-IPFcShGro/UUp8BmwMBkq+6KscPlWQevZi9qqIwVUWg=",
+        "lastModified": 1744961264,
+        "narHash": "sha256-aRmUh0AMwcbdjJHnytg1e5h5ECcaWtIFQa6d9gI85AI=",
         "owner": "numtide",
         "repo": "treefmt-nix",
-        "rev": "49d05555ccdd2592300099d6a657cc33571f4fe0",
+        "rev": "8d404a69efe76146368885110f29a2ca3700bee6",
         "type": "github"
       },
       "original": {
@@ -1852,11 +1853,11 @@
     "tuya-local-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1744694968,
-        "narHash": "sha256-milRVrNAyuGFCjsqlANr/5VLt+LQ+pNGznGJHHQJnyE=",
+        "lastModified": 1744900471,
+        "narHash": "sha256-98gs9V5j+VcmqI+iLo29PTOknPj5u8/C6Mwseof/1Bg=",
         "owner": "make-all",
         "repo": "tuya-local",
-        "rev": "cb60cac28914436fbc2a117af57a7ee5bd663e32",
+        "rev": "014736a05fd9f0502d553c79ffec6c9949852528",
         "type": "github"
       },
       "original": {
@@ -1884,11 +1885,11 @@
     "vimplugin-roslyn-nvim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1744472115,
-        "narHash": "sha256-wYbDdjnFQM/MoXwX7b2vm3jUlO61Pb/31h4TnkksE60=",
+        "lastModified": 1744984504,
+        "narHash": "sha256-WeY6xU7AJPnCVM274KOlYKZJGlM6MTe2bJTA11OuQoM=",
         "owner": "seblj",
         "repo": "roslyn.nvim",
-        "rev": "f64609e4ab21a4cc28af2f526974c961d6adacca",
+        "rev": "d06aa2f6c5990dd195eb12e68bc5a96b6fd23bff",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index 645538b5..e5d6b6b3 100644
--- a/flake.nix
+++ b/flake.nix
@@ -166,6 +166,7 @@
       };
       owner = "hyprwm";
       repo = "hyprland-plugins";
+      rev = "76de87aa975c2334ace0d798c92f268756e17731";
       type = "github";
     };
     hyprpaper = {
diff --git a/inputs/default.nix b/inputs/default.nix
index 9db4735d..92b0eaa6 100644
--- a/inputs/default.nix
+++ b/inputs/default.nix
@@ -167,6 +167,9 @@ let
       hyprland-plugins = mkHyprDep {
         owner = "hyprwm";
         repo = "hyprland-plugins";
+
+        # FIXME: https://github.com/hyprwm/hyprland-plugins/pull/321
+        rev = "76de87aa975c2334ace0d798c92f268756e17731";
       };
 
       hyprgrass = mkHyprDep {
diff --git a/modules/ags/config/default.nix b/modules/ags/config/default.nix
index 4e036f8e..2c4aa99a 100644
--- a/modules/ags/config/default.nix
+++ b/modules/ags/config/default.nix
@@ -1,3 +1,3 @@
 {
-  npmDepsHash = "sha256-di8AqjocF6lCG/KOg7bDJITD1oJRexTywsnJmYg8Ha4=";
+  npmDepsHash = "sha256-E5px8MIiSPNmJosLZVsWa/z8UU/njhyDtwZvQOw4+1Y=";
 }
diff --git a/modules/ags/config/package-lock.json b/modules/ags/config/package-lock.json
index e2c09316..aca3d2f0 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.24.0",
+                "@eslint/js": "9.25.0",
                 "@stylistic/eslint-plugin": "4.2.0",
                 "astal": "https://gitpkg.vercel.app/Aylur/astal/lang/gjs/src?d4dd7fcaa25b885d1327d66aac440ddc7e043090",
-                "eslint": "9.24.0",
+                "eslint": "9.25.0",
                 "eslint-plugin-jsdoc": "50.6.9",
                 "fzf": "0.5.2",
                 "jiti": "2.4.2",
@@ -117,9 +117,9 @@
             }
         },
         "node_modules/@eslint/core": {
-            "version": "0.12.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz",
-            "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==",
+            "version": "0.13.0",
+            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
+            "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
             "license": "Apache-2.0",
             "dependencies": {
                 "@types/json-schema": "^7.0.15"
@@ -174,9 +174,9 @@
             }
         },
         "node_modules/@eslint/js": {
-            "version": "9.24.0",
-            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz",
-            "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==",
+            "version": "9.25.0",
+            "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.0.tgz",
+            "integrity": "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w==",
             "license": "MIT",
             "engines": {
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -204,18 +204,6 @@
                 "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
             }
         },
-        "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
-            "version": "0.13.0",
-            "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz",
-            "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==",
-            "license": "Apache-2.0",
-            "dependencies": {
-                "@types/json-schema": "^7.0.15"
-            },
-            "engines": {
-                "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-            }
-        },
         "node_modules/@humanfs/core": {
             "version": "0.19.1",
             "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
@@ -740,19 +728,19 @@
             }
         },
         "node_modules/eslint": {
-            "version": "9.24.0",
-            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz",
-            "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==",
+            "version": "9.25.0",
+            "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.0.tgz",
+            "integrity": "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA==",
             "license": "MIT",
             "dependencies": {
                 "@eslint-community/eslint-utils": "^4.2.0",
                 "@eslint-community/regexpp": "^4.12.1",
                 "@eslint/config-array": "^0.20.0",
-                "@eslint/config-helpers": "^0.2.0",
-                "@eslint/core": "^0.12.0",
+                "@eslint/config-helpers": "^0.2.1",
+                "@eslint/core": "^0.13.0",
                 "@eslint/eslintrc": "^3.3.1",
-                "@eslint/js": "9.24.0",
-                "@eslint/plugin-kit": "^0.2.7",
+                "@eslint/js": "9.25.0",
+                "@eslint/plugin-kit": "^0.2.8",
                 "@humanfs/node": "^0.16.6",
                 "@humanwhocodes/module-importer": "^1.0.1",
                 "@humanwhocodes/retry": "^0.4.2",
diff --git a/modules/ags/config/package.json b/modules/ags/config/package.json
index 3c2a2fcb..e424138c 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?d4dd7fcaa25b885d1327d66aac440ddc7e043090",
-        "@eslint/js": "9.24.0",
+        "@eslint/js": "9.25.0",
         "@stylistic/eslint-plugin": "4.2.0",
-        "eslint": "9.24.0",
+        "eslint": "9.25.0",
         "eslint-plugin-jsdoc": "50.6.9",
         "fzf": "0.5.2",
         "jiti": "2.4.2",
diff --git a/packages/jmusicbot/default.nix b/packages/jmusicbot/default.nix
index f4943bf7..ed02dd0f 100644
--- a/packages/jmusicbot/default.nix
+++ b/packages/jmusicbot/default.nix
@@ -4,7 +4,7 @@
   fetchurl,
   # deps
   jmusicbot,
-  jdk11_headless,
+  jdk21_headless,
   jre_minimal,
   ...
 }: let
@@ -15,17 +15,16 @@
     "jdk.crypto.cryptoki"
   ];
 
-  jre = (jre_minimal.override {jdk = jdk11_headless;}).overrideAttrs (o: {
+  jre = (jre_minimal.override {jdk = jdk21_headless;}).overrideAttrs (o: {
     buildPhase = ''
       runHook preBuild
 
       # further optimizations for image size https://github.com/NixOS/nixpkgs/issues/169775
       jlink \
-          --module-path ${jdk11_headless}/lib/openjdk/jmods \
+          --module-path ${jdk21_headless}/lib/openjdk/jmods \
           --add-modules ${concatStringsSep "," jre_modules} \
           --no-header-files \
           --no-man-pages \
-          --compress=2 \
           --output $out
 
       runHook postBuild