diff --git a/apps/config/package-lock.json b/apps/config/package-lock.json
index 43d57981..72cf567d 100644
--- a/apps/config/package-lock.json
+++ b/apps/config/package-lock.json
@@ -11,7 +11,7 @@
                 "@eslint/js": "9.29.0",
                 "@stylistic/eslint-plugin": "4.4.1",
                 "eslint": "9.29.0",
-                "eslint-plugin-jsdoc": "51.0.1",
+                "eslint-plugin-jsdoc": "51.1.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3",
@@ -19,13 +19,13 @@
             }
         },
         "node_modules/@es-joy/jsdoccomment": {
-            "version": "0.50.2",
-            "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.50.2.tgz",
-            "integrity": "sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==",
+            "version": "0.51.1",
+            "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.51.1.tgz",
+            "integrity": "sha512-fPn7AW/unCg3JRLt8Wg44HLRVkAEfkFIXiGRJbeOIrd7Hgl4iOFwVHpvVR8I5hJYpn5mNFWwIXR6A16ZRA/M9w==",
             "license": "MIT",
             "dependencies": {
-                "@types/estree": "^1.0.6",
-                "@typescript-eslint/types": "^8.11.0",
+                "@types/estree": "^1.0.8",
+                "@typescript-eslint/types": "^8.34.1",
                 "comment-parser": "1.4.1",
                 "esquery": "^1.6.0",
                 "jsdoc-type-pratt-parser": "~4.1.0"
@@ -325,9 +325,9 @@
             }
         },
         "node_modules/@types/estree": {
-            "version": "1.0.6",
-            "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
-            "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+            "version": "1.0.8",
+            "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+            "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
             "license": "MIT"
         },
         "node_modules/@types/json-schema": {
@@ -609,12 +609,12 @@
             }
         },
         "node_modules/are-docs-informative": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.1.1.tgz",
-            "integrity": "sha512-sqRsNQBwbKLRX0jV5Cu5uzmtflf892n4Vukz7T659ebL4pz3mpOqCMU7lxMoBTFwnp10E3YB5ZcyHM41W5bcDA==",
+            "version": "0.0.2",
+            "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz",
+            "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==",
             "license": "MIT",
             "engines": {
-                "node": ">=18"
+                "node": ">=14"
             }
         },
         "node_modules/argparse": {
@@ -824,24 +824,24 @@
             }
         },
         "node_modules/eslint-plugin-jsdoc": {
-            "version": "51.0.1",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-51.0.1.tgz",
-            "integrity": "sha512-nnH6O8uk0Wp5EvHlVEPESKdGWTlu5g1tfBUZmL/jMZLBpUtttxxW+9hPzTMCYmYsQ3HwDsJdHJAiaDRKsP6iUg==",
+            "version": "51.1.0",
+            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-51.1.0.tgz",
+            "integrity": "sha512-dWyjRvQcAuFHZUTUaJEw7OQ6XziNlbz2wZNt6QuLUHwYMnOWzs6vGSikR/ZSeh+IFHjdH+91AKf+CwYjlJ4kVA==",
             "license": "BSD-3-Clause",
             "dependencies": {
-                "@es-joy/jsdoccomment": "~0.50.2",
-                "are-docs-informative": "^0.1.1",
+                "@es-joy/jsdoccomment": "~0.51.1",
+                "are-docs-informative": "^0.0.2",
                 "comment-parser": "1.4.1",
                 "debug": "^4.4.1",
                 "escape-string-regexp": "^4.0.0",
-                "espree": "^10.3.0",
+                "espree": "^10.4.0",
                 "esquery": "^1.6.0",
                 "parse-imports-exports": "^0.2.4",
                 "semver": "^7.7.2",
                 "spdx-expression-parse": "^4.0.0"
             },
             "engines": {
-                "node": ">=22"
+                "node": ">=20.11.0"
             },
             "peerDependencies": {
                 "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0"
diff --git a/apps/config/package.json b/apps/config/package.json
index 4a1c4092..edbf7a5d 100644
--- a/apps/config/package.json
+++ b/apps/config/package.json
@@ -7,7 +7,7 @@
         "@eslint/js": "9.29.0",
         "@stylistic/eslint-plugin": "4.4.1",
         "eslint": "9.29.0",
-        "eslint-plugin-jsdoc": "51.0.1",
+        "eslint-plugin-jsdoc": "51.1.0",
         "jiti": "2.4.2",
         "pkg-types": "2.1.0",
         "typescript": "5.8.3",
diff --git a/apps/extract-subs/default.nix b/apps/extract-subs/default.nix
index 232c06a5..438999ab 100644
--- a/apps/extract-subs/default.nix
+++ b/apps/extract-subs/default.nix
@@ -5,7 +5,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-xh4azwHCmQL7sDAkvCL3bhTCq20DGXdP7oTDdycrykM=";
+  npmDepsHash = "sha256-f8lsnANzZs434NzMTnU/Mc3CjSTYf5w6zukzTXHUByE=";
 
   runtimeInputs = [
     ffmpeg-full
diff --git a/apps/extract-subs/package-lock.json b/apps/extract-subs/package-lock.json
index 2c61c5f6..beb43214 100644
--- a/apps/extract-subs/package-lock.json
+++ b/apps/extract-subs/package-lock.json
@@ -28,14 +28,14 @@
             "version": "0.0.0",
             "dev": true,
             "dependencies": {
-                "@eslint/js": "9.28.0",
+                "@eslint/js": "9.29.0",
                 "@stylistic/eslint-plugin": "4.4.1",
-                "eslint": "9.28.0",
-                "eslint-plugin-jsdoc": "50.8.0",
+                "eslint": "9.29.0",
+                "eslint-plugin-jsdoc": "51.0.1",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3",
-                "typescript-eslint": "8.34.0"
+                "typescript-eslint": "8.34.1"
             }
         },
         "node_modules/@esbuild/aix-ppc64": {
diff --git a/apps/list2series/default.nix b/apps/list2series/default.nix
index 1b78102b..95342f66 100644
--- a/apps/list2series/default.nix
+++ b/apps/list2series/default.nix
@@ -1,7 +1,7 @@
 {buildApp, ...}:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-+UyN80ARC87ZmOejOgfeEVo4D3y3vicoqAhaG8Lk8eE=";
+  npmDepsHash = "sha256-Awymm9YdpCLWto9m1csQTIsFDFPaGNg800ecEFPoT18=";
 
   runtimeInputs = [];
 
diff --git a/apps/list2series/package-lock.json b/apps/list2series/package-lock.json
index 422cd02a..1dfd89ba 100644
--- a/apps/list2series/package-lock.json
+++ b/apps/list2series/package-lock.json
@@ -31,7 +31,7 @@
                 "@eslint/js": "9.29.0",
                 "@stylistic/eslint-plugin": "4.4.1",
                 "eslint": "9.29.0",
-                "eslint-plugin-jsdoc": "51.0.1",
+                "eslint-plugin-jsdoc": "51.1.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3",
@@ -1143,9 +1143,9 @@
             }
         },
         "node_modules/exsolve": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz",
-            "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==",
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz",
+            "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==",
             "license": "MIT"
         },
         "node_modules/fast-deep-equal": {
diff --git a/apps/mc-mods/default.nix b/apps/mc-mods/default.nix
index e0205dcc..a245f236 100644
--- a/apps/mc-mods/default.nix
+++ b/apps/mc-mods/default.nix
@@ -5,7 +5,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-XGY4jP0WQgVKRaGNLlQjFWg/+tE4V3ZnIHLmrY+UhqE=";
+  npmDepsHash = "sha256-eONCrI2YBa0OUhZduKHpW8JDsyHbkab51f6TIwk+oV0=";
 
   runtimeInputs = [
     nodejs_latest
diff --git a/apps/mc-mods/package-lock.json b/apps/mc-mods/package-lock.json
index d2fdad89..e0069335 100644
--- a/apps/mc-mods/package-lock.json
+++ b/apps/mc-mods/package-lock.json
@@ -30,7 +30,7 @@
                 "@eslint/js": "9.29.0",
                 "@stylistic/eslint-plugin": "4.4.1",
                 "eslint": "9.29.0",
-                "eslint-plugin-jsdoc": "51.0.1",
+                "eslint-plugin-jsdoc": "51.1.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3",
@@ -1032,9 +1032,9 @@
             }
         },
         "node_modules/exsolve": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz",
-            "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==",
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz",
+            "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==",
             "license": "MIT"
         },
         "node_modules/fast-deep-equal": {
diff --git a/apps/pin-inputs/default.nix b/apps/pin-inputs/default.nix
index 08d2c92a..26c63d74 100644
--- a/apps/pin-inputs/default.nix
+++ b/apps/pin-inputs/default.nix
@@ -1,7 +1,7 @@
 {buildApp, ...}:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-rkK+jTxVJDotaq8Gkgw86weA5QJWHDMG5ExSUXfYV4Q=";
+  npmDepsHash = "sha256-jYuKcBONl+BDHuVTBO0DND6MToV3iTyz1uWxZestKVo=";
 
   runtimeInputs = [];
 
diff --git a/apps/pin-inputs/package-lock.json b/apps/pin-inputs/package-lock.json
index 34e082fa..009b8de1 100644
--- a/apps/pin-inputs/package-lock.json
+++ b/apps/pin-inputs/package-lock.json
@@ -30,7 +30,7 @@
                 "@eslint/js": "9.29.0",
                 "@stylistic/eslint-plugin": "4.4.1",
                 "eslint": "9.29.0",
-                "eslint-plugin-jsdoc": "51.0.1",
+                "eslint-plugin-jsdoc": "51.1.0",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3",
@@ -1032,9 +1032,9 @@
             }
         },
         "node_modules/exsolve": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz",
-            "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==",
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz",
+            "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==",
             "license": "MIT"
         },
         "node_modules/fast-deep-equal": {
diff --git a/apps/update-sources/default.nix b/apps/update-sources/default.nix
index 2f42ea51..7d3b4577 100644
--- a/apps/update-sources/default.nix
+++ b/apps/update-sources/default.nix
@@ -13,7 +13,7 @@
 }:
 buildApp {
   src = ./.;
-  npmDepsHash = "sha256-NpT5XlbVjRTjcL7/IuHllg1IMip7bAf0b4kz4JELjW0=";
+  npmDepsHash = "sha256-YH9CGNX+UGvhe5YisKKbKarx22uFdjwL0K2Gpwnem98=";
 
   runtimeInputs = [
     curl
diff --git a/apps/update-sources/package-lock.json b/apps/update-sources/package-lock.json
index d3cbdb59..707178a7 100644
--- a/apps/update-sources/package-lock.json
+++ b/apps/update-sources/package-lock.json
@@ -27,14 +27,14 @@
             "version": "0.0.0",
             "dev": true,
             "dependencies": {
-                "@eslint/js": "9.28.0",
+                "@eslint/js": "9.29.0",
                 "@stylistic/eslint-plugin": "4.4.1",
-                "eslint": "9.28.0",
-                "eslint-plugin-jsdoc": "50.8.0",
+                "eslint": "9.29.0",
+                "eslint-plugin-jsdoc": "51.0.1",
                 "jiti": "2.4.2",
                 "pkg-types": "2.1.0",
                 "typescript": "5.8.3",
-                "typescript-eslint": "8.34.0"
+                "typescript-eslint": "8.34.1"
             }
         },
         "node_modules/@esbuild/aix-ppc64": {
@@ -1032,9 +1032,9 @@
             }
         },
         "node_modules/exsolve": {
-            "version": "1.0.5",
-            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz",
-            "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==",
+            "version": "1.0.7",
+            "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz",
+            "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==",
             "license": "MIT"
         },
         "node_modules/fast-deep-equal": {
diff --git a/configurations/cluster/modules/caddy/plugins.nix b/configurations/cluster/modules/caddy/plugins.nix
index 22b0efa6..0eaa077d 100644
--- a/configurations/cluster/modules/caddy/plugins.nix
+++ b/configurations/cluster/modules/caddy/plugins.nix
@@ -13,5 +13,5 @@
     };
   };
 
-  hash = "sha256-tTdemqPVKW5tWofYZLarf1oihDy4FLO4uIXTIcGRmVM=";
+  hash = "sha256-QPyATc86Pojxa5jT6xI/CaI8M42JwoVI4+6Yl3qnLQY=";
 }
diff --git a/configurations/nos/modules/docker/forgejo/images/act_runner.nix b/configurations/nos/modules/docker/forgejo/images/act_runner.nix
index e88ef8d1..4571cefe 100644
--- a/configurations/nos/modules/docker/forgejo/images/act_runner.nix
+++ b/configurations/nos/modules/docker/forgejo/images/act_runner.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "vegardit/gitea-act-runner";
-  imageDigest = "sha256:58e3c049abc0bed4f85db6cac3e1490d718db267ae36bf56b2e36189e2947d4a";
-  hash = "sha256-G/SdxlSDt7FDGCcT+aCrnG5P8p5hnZM4wsXLQizSSHo=";
+  imageDigest = "sha256:051f944117c5f2453349c4c181601585f6d4a627b1cedcea1b28b3b4821f50a9";
+  hash = "sha256-dmkcAAhE9HN4Anx8wX8tLs3nbpyadDhqWN5+s9AtGAY=";
   finalImageName = imageName;
   finalImageTag = "dind-latest";
 }
diff --git a/configurations/nos/modules/docker/forgejo/images/forgejo.nix b/configurations/nos/modules/docker/forgejo/images/forgejo.nix
index e7781ad6..d337c3e1 100644
--- a/configurations/nos/modules/docker/forgejo/images/forgejo.nix
+++ b/configurations/nos/modules/docker/forgejo/images/forgejo.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "codeberg.org/forgejo/forgejo";
-  imageDigest = "sha256:53d3a4ec77f79fcf8f71b959fdf9fc59235a1dc8e064f5acd24edb0cc8b70325";
-  hash = "sha256-1ueS/UOEy0N7dYZf7b+GEY+2q6yugv3omzY2cDjpzMo=";
+  imageDigest = "sha256:7c061fccf20f8e422d886fb4a99aa6f3083fde13c40d78ddac67a83e0d4349f4";
+  hash = "sha256-siywr+j1M/mHPVBm4UanM0/umnQviXP65LD21GK62O8=";
   finalImageName = imageName;
   finalImageTag = "11";
 }
diff --git a/configurations/nos/modules/docker/immich/images/machine-learning.nix b/configurations/nos/modules/docker/immich/images/machine-learning.nix
index c82d7cf6..0b7b1c7e 100644
--- a/configurations/nos/modules/docker/immich/images/machine-learning.nix
+++ b/configurations/nos/modules/docker/immich/images/machine-learning.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "ghcr.io/immich-app/immich-machine-learning";
-  imageDigest = "sha256:e157e0fa0d4363b0b6bab1923adab5951bbcdb71cd9016470bc6810dae21d115";
-  hash = "sha256-Pvz4YVx4b4A6M8VAD3YSqP6J3gkMkI8RZleoewSSV5k=";
+  imageDigest = "sha256:9f2f61d86af82d04926f9b896c995c502303052905517c5485dd26bf1e42a44e";
+  hash = "sha256-YFjYgADPegI65cTtJ/JZ0N9O5ejenje6f1eVnIyFS6U=";
   finalImageName = imageName;
   finalImageTag = "release";
 }
diff --git a/configurations/nos/modules/docker/immich/images/postgres.nix b/configurations/nos/modules/docker/immich/images/postgres.nix
index 348fbab0..0d355837 100644
--- a/configurations/nos/modules/docker/immich/images/postgres.nix
+++ b/configurations/nos/modules/docker/immich/images/postgres.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "ghcr.io/immich-app/postgres";
-  imageDigest = "sha256:b8a840254e8e2db8720db3700a104623da372056347e80b598f00dd4da8df568";
-  hash = "sha256-3AFzVH/zX+Ge3Q+Y7rZ9P5B7ZlNlAqy8pHsd2h26Bqo=";
+  imageDigest = "sha256:007a98749340534a0408a26435b1a0ab5ded76df788f897fdb6342c9c1b95448";
+  hash = "sha256-jHSwaHXbT4/PrlLcxs8hetcZK68frez1nClDIaolDS8=";
   finalImageName = imageName;
   finalImageTag = "14-vectorchord0.3.0-pgvectors0.2.0";
 }
diff --git a/configurations/nos/modules/docker/immich/images/server.nix b/configurations/nos/modules/docker/immich/images/server.nix
index 644e8070..ba73f2e8 100644
--- a/configurations/nos/modules/docker/immich/images/server.nix
+++ b/configurations/nos/modules/docker/immich/images/server.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "ghcr.io/immich-app/immich-server";
-  imageDigest = "sha256:073fc04c7e3d18ace466c20763809cf17aa55765ed610f12971b392a6a80b50c";
-  hash = "sha256-a7gjJS0PYEn376PnUavSzKkvmlvykCItdrjP5F2Jcks=";
+  imageDigest = "sha256:df5bbf4e29eff4688063a005708f8b96f13073200b4a7378f7661568459b31e9";
+  hash = "sha256-snwU6DEo5uyEOuQjoSf7iH2tiYlH43wuGLEqTfOwTg4=";
   finalImageName = imageName;
   finalImageTag = "release";
 }
diff --git a/configurations/nos/modules/docker/media/seerr/images/jellyseerr.nix b/configurations/nos/modules/docker/media/seerr/images/jellyseerr.nix
index cfdfada8..e4aa3ef1 100644
--- a/configurations/nos/modules/docker/media/seerr/images/jellyseerr.nix
+++ b/configurations/nos/modules/docker/media/seerr/images/jellyseerr.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "docker.io/fallenbagel/jellyseerr";
-  imageDigest = "sha256:8f320036d937d84c385ea5800f87d69ba16ec4d3770fccf6cad803b5e8d66a52";
-  hash = "sha256-3kIhchJ1BJXpTa6ahkntIXp1FsUrK7zycVYNRWV9h3w=";
+  imageDigest = "sha256:3ec2ce92445719ea1e610b3e758da20cd317c8e1028fc810d001b1370a339226";
+  hash = "sha256-fzEfL+c6lAcv3PwTl9KI20L525MyrcyANDvWSnibyTk=";
   finalImageName = imageName;
   finalImageTag = "latest";
 }
diff --git a/configurations/nos/modules/docker/media/sonarr/images/sonarr.nix b/configurations/nos/modules/docker/media/sonarr/images/sonarr.nix
index ba365123..0568057a 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:de67e5b682fedcc4ac34f28a5697931c680c959ea65f8111b0cce17bc698c0b2";
-  hash = "sha256-SgEcdG9tqljlgvTf7lW17P3B4sz9k8cBkQxBLfl8AUQ=";
+  imageDigest = "sha256:1156329d544b38bd1483add75c9b72c559f20e1ca043fd2d6376c2589d38951f";
+  hash = "sha256-CtgBcK9ubDEiFCBWdHHv+13/VIIXR18WjSHaVfiekMc=";
   finalImageName = imageName;
   finalImageTag = "latest";
 }
diff --git a/configurations/nos/modules/docker/nextcloud/images/onlyoffice.nix b/configurations/nos/modules/docker/nextcloud/images/onlyoffice.nix
index 8acd489f..f3a96e75 100644
--- a/configurations/nos/modules/docker/nextcloud/images/onlyoffice.nix
+++ b/configurations/nos/modules/docker/nextcloud/images/onlyoffice.nix
@@ -1,8 +1,8 @@
 pkgs:
 pkgs.dockerTools.pullImage rec {
   imageName = "onlyoffice/documentserver";
-  imageDigest = "sha256:0daa2d1d414d49286bfa9495fc0c936e7e73edaf8944a61102a7a6353a952297";
-  hash = "sha256-HO2z4wjDWYTUWaOtrbPC0+XsxMMU/fBDykava6KVLiY=";
+  imageDigest = "sha256:68ef4bee1827ca4cd3dace67e127f4e796fa91303900007cd8dd97151b0e623c";
+  hash = "sha256-Qlf37RkTjJv1wrekL8Brjy1j9sDtruSYgRsavmtBs+E=";
   finalImageName = imageName;
   finalImageTag = "latest";
 }
diff --git a/flake.lock b/flake.lock
index 53c24696..ff26feec 100644
--- a/flake.lock
+++ b/flake.lock
@@ -155,11 +155,11 @@
     "custom-sidebar-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1749975308,
-        "narHash": "sha256-KyTm5ENY0C9QACKTeIBr7HqBuyYZF+ahHV1diAlhSuk=",
+        "lastModified": 1750378748,
+        "narHash": "sha256-3uvcZEaKe637oArntqKybB1WBE+krNxk+WgolXVjgww=",
         "owner": "elchininet",
         "repo": "custom-sidebar",
-        "rev": "e489999ddfe8b5f1a2a2c6721f4255f059b5f5df",
+        "rev": "bc6dafe09472000c70c1b478c9f445d97d2ba4cd",
         "type": "github"
       },
       "original": {
@@ -460,11 +460,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1750107071,
-        "narHash": "sha256-yfuHCO4m+gu3OBNGnP0/TL5W8nLXrC/EV1fs/+YcoL8=",
+        "lastModified": 1750304462,
+        "narHash": "sha256-Mj5t4yX05/rXnRqJkpoLZTWqgStB88Mr/fegTRqyiWc=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "0edffd088e42fdc48598b37d88eb5345e2ca3937",
+        "rev": "863842639722dd12ae9e37ca83bcb61a63b36f6c",
         "type": "github"
       },
       "original": {
@@ -576,11 +576,11 @@
         "xdph": "xdph"
       },
       "locked": {
-        "lastModified": 1750106438,
-        "narHash": "sha256-zaTFR6NLaXkveEGl2kdl4UlvT7eHm3cYSbgSkibCO+M=",
+        "lastModified": 1750373382,
+        "narHash": "sha256-HsBt7sl2ODSHv1LxKxA47j7klCqY4k3fE4SQGnEO0Ac=",
         "owner": "hyprwm",
         "repo": "Hyprland",
-        "rev": "0ece4af36a988ad06b28ed666011d84372d9e4dc",
+        "rev": "8ebff1948ff665ff6a1b49fb715b7de0797fae04",
         "type": "github"
       },
       "original": {
@@ -602,11 +602,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1749980366,
-        "narHash": "sha256-sB2jmzoZgxMOpLsw4EfQyp2NbO3qhorR6gAdbNXHxOk=",
+        "lastModified": 1750408892,
+        "narHash": "sha256-SDhYYByonfW1jdKSe68GukGWSbOuuxzkMVRTXSsU7g0=",
         "owner": "hyprwm",
         "repo": "hyprland-plugins",
-        "rev": "4783860953a0777fee43d45fee0df9173f9e8c9e",
+        "rev": "f49193f8e0b3eb167fc105107791a22fdb1d283f",
         "type": "github"
       },
       "original": {
@@ -763,11 +763,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1749539958,
-        "narHash": "sha256-4tMENfaUGXh5jCn4B/ubOJZHOiKsY6uKBT+Kh2uqR+w=",
+        "lastModified": 1750371944,
+        "narHash": "sha256-9a7ZrB/7PD3xbnAP2UKLW9D6pRif7uRNsidOKQXmaBM=",
         "owner": "hyprwm",
         "repo": "hyprpaper",
-        "rev": "81dc1fe4f05305319bb586a0eb6f6004a1476832",
+        "rev": "7d63e15c0998d0a4d55246b8b6d3b7255b70c62a",
         "type": "github"
       },
       "original": {
@@ -836,11 +836,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1749627191,
-        "narHash": "sha256-bUv8CDE6Uyxak4UkOvRjx5xj6+msEHSpYGeAjkuTnTs=",
+        "lastModified": 1750403547,
+        "narHash": "sha256-XDDINMbHTtKQeSRpX5mwq20z23Wg/I/G4JUinA3V8Xg=",
         "owner": "Jovian-Experiments",
         "repo": "Jovian-NixOS",
-        "rev": "f31df4cb6b2eeef6cf0113edb687297be72a69df",
+        "rev": "52b86b86d925ec00c836ecc6d36f9c947bb15736",
         "type": "github"
       },
       "original": {
@@ -863,11 +863,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1749413083,
-        "narHash": "sha256-mUywmapQc5rv4H2jNjTQM+GViQ02IndoqBEvbxQB/f0=",
+        "lastModified": 1750448268,
+        "narHash": "sha256-N/+Hs9QqgFij1S8kmpFOccmzFWvAfiXKMLBYMWaFj3w=",
         "owner": "matt1432",
         "repo": "Kapowarr",
-        "rev": "faf7096ab4cd53004aef0772d61126eff690ee1b",
+        "rev": "b052bb0e96552eb2ff4ce8b30210d45753a29dd3",
         "type": "github"
       },
       "original": {
@@ -906,11 +906,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1749827744,
-        "narHash": "sha256-BR6ciMVH6g8dmsBWBB1xEOz5uobx0+xEtmFpPcbp6zQ=",
+        "lastModified": 1750406092,
+        "narHash": "sha256-pxta6O8THjL59+B6aNjL7wM24/7hJcu7Lep7AUF7Q+o=",
         "owner": "kotontrion",
         "repo": "kompass",
-        "rev": "76e2b58c63eaa7badd6be1c601bc28702266b233",
+        "rev": "a9f75f16eb726579aba28110f9221fa046217762",
         "type": "github"
       },
       "original": {
@@ -1010,11 +1010,11 @@
     "material-symbols-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1747598726,
-        "narHash": "sha256-7Jte9zOePrNYoHzP5UxMR7Raen0BGEY22NvifbPdznY=",
+        "lastModified": 1750318909,
+        "narHash": "sha256-fjH2oPGbjBlBQZnfEvP/i6qrllcVlfY2CGSEANBWXSA=",
         "owner": "beecho01",
         "repo": "material-symbols",
-        "rev": "e7994695e0331a4596fb71b6bae6ff874bd0ff44",
+        "rev": "de0fe04dbc1885d3dec2a9a3787e7db575f1d25b",
         "type": "github"
       },
       "original": {
@@ -1256,11 +1256,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1750075508,
-        "narHash": "sha256-9LWAshUNUej/A+OS+a4Hu4ICbIIeIWTe3l0i4klg1gg=",
+        "lastModified": 1750470969,
+        "narHash": "sha256-YMaUU2NcputSsHj5SA6szrCCvQG2M2GM3pdxkLScC18=",
         "owner": "fufexan",
         "repo": "nix-gaming",
-        "rev": "1c993e08c87dd4cec93cd6fdb6b7131ba068bef9",
+        "rev": "d65ae6dbd838ce875ff289ec60cbfe46e97f38c1",
         "type": "github"
       },
       "original": {
@@ -1392,11 +1392,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1749998299,
-        "narHash": "sha256-IBCRsercszx8OcLDMpl7gpN1u6mdxl5S/DIw7c/8ywU=",
+        "lastModified": 1750467941,
+        "narHash": "sha256-RVuToZCdVpTfEDl7BhpOrGmj2piBvDoC/6VZCT6apNE=",
         "owner": "kaylorben",
         "repo": "nixcord",
-        "rev": "f57daf224f08ca61c2b5479b7227a6650f10e9db",
+        "rev": "dbe1bbec41461e6af5940ebf02793e4523d586c8",
         "type": "github"
       },
       "original": {
@@ -1442,11 +1442,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1750062804,
-        "narHash": "sha256-IxPOl55FY8kHD2bWLlVJUcEKidYarkVg52ma4CnUlok=",
+        "lastModified": 1750452262,
+        "narHash": "sha256-NOFlIP+sRga9o5G8MY4UtZFPHB4D3EyJQxTo1hHNqig=",
         "owner": "matt1432",
         "repo": "nixos-jellyfin",
-        "rev": "39036df3ef1124a3223d9cdde527f946f89ff6b8",
+        "rev": "e3093a4524da624cefee0f4181189d8b838a54c1",
         "type": "github"
       },
       "original": {
@@ -1536,10 +1536,10 @@
     },
     "nixpkgs_2": {
       "locked": {
-        "lastModified": 1749794982,
-        "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=",
+        "lastModified": 1750365781,
+        "narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=",
         "ref": "nixos-unstable",
-        "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81",
+        "rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54",
         "shallow": true,
         "type": "git",
         "url": "https://github.com/NixOS/nixpkgs"
@@ -1761,11 +1761,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1750053656,
-        "narHash": "sha256-RLICfwDvIEFtLc3GrVsPu46sdGLlPe3ULGz4gSgLxCA=",
+        "lastModified": 1750480304,
+        "narHash": "sha256-zPSQ9gJbMetk6eW9JhOufGwTN8W0kON/yd2sEKJ2vyE=",
         "ref": "refs/heads/master",
-        "rev": "9a3033340529881ae5e564d1aedf6884f53e3ea1",
-        "revCount": 582,
+        "rev": "767a8ef8ad0e32d187c19c7f3974cd21db3a831c",
+        "revCount": 593,
         "type": "git",
         "url": "https://git.outfoxxed.me/quickshell/quickshell"
       },
@@ -1931,11 +1931,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1749592509,
-        "narHash": "sha256-VunQzfZFA+Y6x3wYi2UE4DEQ8qKoAZZCnZPUlSoqC+A=",
+        "lastModified": 1750119275,
+        "narHash": "sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M=",
         "owner": "Mic92",
         "repo": "sops-nix",
-        "rev": "50754dfaa0e24e313c626900d44ef431f3210138",
+        "rev": "77c423a03b9b2b79709ea2cb63336312e78b72e2",
         "type": "github"
       },
       "original": {
@@ -1947,11 +1947,11 @@
     "spotifyplus-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1749937242,
-        "narHash": "sha256-TJ/plWhBnRCbV+W9tv78ibn9nANNxx5DMXkGp+8LKnY=",
+        "lastModified": 1750461682,
+        "narHash": "sha256-IHysuDaZurx3jlSGnZksIXvG0jUm46fyiiG4Ubxpwnk=",
         "owner": "thlucas1",
         "repo": "homeassistantcomponent_spotifyplus",
-        "rev": "afbd95c78645ee79b660608bccab0f0a21275cbb",
+        "rev": "3bdbcb6e4a79942c4a298b77c1c1b790afdb0f4a",
         "type": "github"
       },
       "original": {
@@ -1963,11 +1963,11 @@
     "spotifywebapi-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1749937085,
-        "narHash": "sha256-oDSbuHUZKDlx6a8eM0L49dmpjdJVLxyzzgxxuhab0eY=",
+        "lastModified": 1750457596,
+        "narHash": "sha256-oH+kWmGrWYNO2EA0Nevw+d2AWtjNvSvycowrDKmW4qM=",
         "owner": "thlucas1",
         "repo": "SpotifyWebApiPython",
-        "rev": "c50504a2a0610ad7dec5f2c4519a1b496dbeda98",
+        "rev": "1fb3f1c57fcc0663879f9af5b580514f5a4be908",
         "type": "github"
       },
       "original": {
@@ -2030,11 +2030,11 @@
     "ts-for-gir-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1749903680,
-        "narHash": "sha256-c5jzK5S4szY1iFYMdjJNfOAkr7U2i/a6/yMek0UTG9s=",
+        "lastModified": 1750239021,
+        "narHash": "sha256-H6PSaIID7z0EbZtopcjiVEln5VilA45qK8IhAMFbCxk=",
         "owner": "gjsify",
         "repo": "ts-for-gir",
-        "rev": "a88df8ea4c69d365669c4381c32a791400306af7",
+        "rev": "500db861f4ce71a5c91b2692983a4b8df9f643ce",
         "type": "github"
       },
       "original": {
@@ -2046,11 +2046,11 @@
     "tuya-local-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1750078607,
-        "narHash": "sha256-jwuFMFLgsJtAlt6WgLHlVYbzWPivGTOh9lKTpyPXizc=",
+        "lastModified": 1750464738,
+        "narHash": "sha256-XDoqa7HZe6vNDEZnFlLHHBId2gH/+r4Dp8/zyf0sMcc=",
         "owner": "make-all",
         "repo": "tuya-local",
-        "rev": "918fc3e52a6be978bc99eb68ace0e0496ffa3ec6",
+        "rev": "16c29c034728b810b80a6bcc7f8bb23437ddf65b",
         "type": "github"
       },
       "original": {
@@ -2078,11 +2078,11 @@
     "vimplugin-roslyn-nvim-src": {
       "flake": false,
       "locked": {
-        "lastModified": 1750108222,
-        "narHash": "sha256-8zinv3eM4AJgB0eas2WetW+h8NOsyN2dXCR5Q01wa3Q=",
+        "lastModified": 1750191218,
+        "narHash": "sha256-pTpJ6sS32ztVm6qE60uEfSmG5WLWQ1xqLbu/i6dZmyY=",
         "owner": "seblj",
         "repo": "roslyn.nvim",
-        "rev": "898dbd66bc88e170a5be5e1682073ecb5074d757",
+        "rev": "6baa44274dabf237a0ebec94b4ccad0e3831ed12",
         "type": "github"
       },
       "original": {
diff --git a/homeManagerModules/firefox/default.nix b/homeManagerModules/firefox/default.nix
index 3b087b7b..8bdb9bd4 100644
--- a/homeManagerModules/firefox/default.nix
+++ b/homeManagerModules/firefox/default.nix
@@ -22,7 +22,7 @@ in {
     programs.firefox = {
       enable = true;
 
-      package = pkgs.firefox-devedition-bin;
+      package = pkgs.firefox-devedition;
 
       profiles.${mainProfile} = {
         isDefault = true;
diff --git a/lib/pkgs/mk-types/default.nix b/lib/pkgs/mk-types/default.nix
index 325b7b83..bd5df893 100644
--- a/lib/pkgs/mk-types/default.nix
+++ b/lib/pkgs/mk-types/default.nix
@@ -21,7 +21,7 @@ in
     pname = "${pname}-types";
     version = "0.0.0";
 
-    npmDepsHash = "sha256-Lc/HBAuV12e51KftibXda8WiNGdCAK+qEl1voqjRAgc=";
+    npmDepsHash = "sha256-JIWYvNn6vakIkCDB0dTULkOi14ZQbqKdgfmy16CnHFw=";
 
     src = ./.;
     dontNpmBuild = true;
diff --git a/lib/pkgs/mk-types/package-lock.json b/lib/pkgs/mk-types/package-lock.json
index 9391d305..b8de791a 100644
--- a/lib/pkgs/mk-types/package-lock.json
+++ b/lib/pkgs/mk-types/package-lock.json
@@ -5,7 +5,7 @@
     "packages": {
         "": {
             "dependencies": {
-                "@ts-for-gir/cli": "4.0.0-beta.23"
+                "@ts-for-gir/cli": "4.0.0-beta.25"
             }
         },
         "node_modules/@babel/code-frame": {
@@ -32,12 +32,12 @@
             }
         },
         "node_modules/@gi.ts/parser": {
-            "version": "4.0.0-beta.23",
-            "resolved": "https://registry.npmjs.org/@gi.ts/parser/-/parser-4.0.0-beta.23.tgz",
-            "integrity": "sha512-PH3x+++ZECvsrFvhSITrrYQxyLaVg+PK6oJp81k5m0A5SL58tJOWDteblD72y7m70GnVMGBW/2Xi+IKE+v5xxg==",
+            "version": "4.0.0-beta.25",
+            "resolved": "https://registry.npmjs.org/@gi.ts/parser/-/parser-4.0.0-beta.25.tgz",
+            "integrity": "sha512-z41FsKv7cXCLRK+aTi++nh/qAkSKe/xEILanV5c4G8S1XxU0QWNCgGS7k15yf7Qg3zJi1z+LyEP09U0pJf0N9Q==",
             "license": "MIT",
             "dependencies": {
-                "fast-xml-parser": "^5.0.9"
+                "fast-xml-parser": "^5.2.5"
             },
             "engines": {
                 "node": ">=12.0.0"
@@ -415,23 +415,23 @@
             }
         },
         "node_modules/@ts-for-gir/cli": {
-            "version": "4.0.0-beta.23",
-            "resolved": "https://registry.npmjs.org/@ts-for-gir/cli/-/cli-4.0.0-beta.23.tgz",
-            "integrity": "sha512-LrJLF3FecEQPrA5TdGic3kOOSlXeNdaFuNe0w67U/ayl9Ld30bQO6Q1jXgZwi+lxWZiNOyx4Xb12O9N3/3Z9sA==",
+            "version": "4.0.0-beta.25",
+            "resolved": "https://registry.npmjs.org/@ts-for-gir/cli/-/cli-4.0.0-beta.25.tgz",
+            "integrity": "sha512-XMkLHfKpnSBhTe+Pox2ufiPFNdXL4TD0yUhtAv3Dndof++ExClUx/oNlWM2z9JFm30adtGQ+Ac23A9KyvuLfPA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@gi.ts/parser": "^4.0.0-beta.23",
-                "@inquirer/prompts": "^7.4.0",
-                "@ts-for-gir/generator-base": "^4.0.0-beta.23",
-                "@ts-for-gir/generator-html-doc": "^4.0.0-beta.23",
-                "@ts-for-gir/generator-typescript": "^4.0.0-beta.23",
-                "@ts-for-gir/lib": "^4.0.0-beta.23",
+                "@gi.ts/parser": "^4.0.0-beta.25",
+                "@inquirer/prompts": "^7.5.3",
+                "@ts-for-gir/generator-base": "^4.0.0-beta.25",
+                "@ts-for-gir/generator-html-doc": "^4.0.0-beta.25",
+                "@ts-for-gir/generator-typescript": "^4.0.0-beta.25",
+                "@ts-for-gir/lib": "^4.0.0-beta.25",
                 "colorette": "^2.0.20",
                 "cosmiconfig": "^9.0.0",
-                "glob": "^11.0.1",
-                "inquirer": "^12.5.0",
+                "glob": "^11.0.3",
+                "inquirer": "^12.6.3",
                 "prettier": "^3.5.3",
-                "yargs": "^17.7.2"
+                "yargs": "^18.0.0"
             },
             "bin": {
                 "ts-for-gir": "lib/start.js"
@@ -441,38 +441,38 @@
             }
         },
         "node_modules/@ts-for-gir/generator-base": {
-            "version": "4.0.0-beta.23",
-            "resolved": "https://registry.npmjs.org/@ts-for-gir/generator-base/-/generator-base-4.0.0-beta.23.tgz",
-            "integrity": "sha512-XMDzS6/DSYwt2ldzWfqRbWYR7vF8Q8GCpVl4gzRoUNLDzetsgtcX/pqxCOG+UxzOrWQ98w1ywVkb0jvbjwJU5Q==",
+            "version": "4.0.0-beta.25",
+            "resolved": "https://registry.npmjs.org/@ts-for-gir/generator-base/-/generator-base-4.0.0-beta.25.tgz",
+            "integrity": "sha512-NAX9Q/6iFPzaqoWwAA2Fe3RNNSq72ej1DbfsuBWflxrxF7iqtCcdkIsau0xNVFpF9p01Qc6sKx0Z8jm60remug==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@ts-for-gir/lib": "^4.0.0-beta.23"
+                "@ts-for-gir/lib": "^4.0.0-beta.25"
             },
             "engines": {
                 "node": ">=18"
             }
         },
         "node_modules/@ts-for-gir/generator-html-doc": {
-            "version": "4.0.0-beta.23",
-            "resolved": "https://registry.npmjs.org/@ts-for-gir/generator-html-doc/-/generator-html-doc-4.0.0-beta.23.tgz",
-            "integrity": "sha512-+VAklnA2WoeCyqBHg1E1K/r2ArtNsbEVHhZrh81bQV6omM8Q9XiETsCaBi5+92cNfbfZ/qDqzif12rEeCCCpxw==",
+            "version": "4.0.0-beta.25",
+            "resolved": "https://registry.npmjs.org/@ts-for-gir/generator-html-doc/-/generator-html-doc-4.0.0-beta.25.tgz",
+            "integrity": "sha512-++Gw3z0iyZ2ZpbnHcqyNbxh+7ZSb/Y6mWNy8QXw7XYbn42ZWmfNajv+Kmy9MKkyRz5gPWd5V2lo84yHMEg72Ww==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@ts-for-gir/generator-base": "^4.0.0-beta.23",
-                "@ts-for-gir/lib": "^4.0.0-beta.23"
+                "@ts-for-gir/generator-base": "^4.0.0-beta.25",
+                "@ts-for-gir/lib": "^4.0.0-beta.25"
             },
             "engines": {
                 "node": ">=18"
             }
         },
         "node_modules/@ts-for-gir/generator-typescript": {
-            "version": "4.0.0-beta.23",
-            "resolved": "https://registry.npmjs.org/@ts-for-gir/generator-typescript/-/generator-typescript-4.0.0-beta.23.tgz",
-            "integrity": "sha512-CX3h04cwbLZYJ//y9EweJqtCQkcrl0gtNUa4TIO0/jL49Ki3ckLgvw57njLsIkfwLvDZ98h0dpeFhdSQPFcCqQ==",
+            "version": "4.0.0-beta.25",
+            "resolved": "https://registry.npmjs.org/@ts-for-gir/generator-typescript/-/generator-typescript-4.0.0-beta.25.tgz",
+            "integrity": "sha512-WjbfDvf6C/BOOD0QOQpk0QR5XqUqfS67jC0yxu/27DYejNiuONFZGgyes3yg1/wTxzUbAz7LfsKSMFXch6Bp4w==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@ts-for-gir/generator-base": "^4.0.0-beta.23",
-                "@ts-for-gir/lib": "^4.0.0-beta.23",
+                "@ts-for-gir/generator-base": "^4.0.0-beta.25",
+                "@ts-for-gir/lib": "^4.0.0-beta.25",
                 "ejs": "^3.1.10",
                 "xml2js": "^0.6.2"
             },
@@ -481,15 +481,15 @@
             }
         },
         "node_modules/@ts-for-gir/lib": {
-            "version": "4.0.0-beta.23",
-            "resolved": "https://registry.npmjs.org/@ts-for-gir/lib/-/lib-4.0.0-beta.23.tgz",
-            "integrity": "sha512-WeZteowisNfYW6IMDCpii59fFPEsJcSm5N/Ec9rIpr0yxGowOBTPohrN2f67MT07MylpxYCR4k7LQObAn1nMsA==",
+            "version": "4.0.0-beta.25",
+            "resolved": "https://registry.npmjs.org/@ts-for-gir/lib/-/lib-4.0.0-beta.25.tgz",
+            "integrity": "sha512-UFLXqV16EPCgwYBO6tHu+qFH+Gy4K2oaIqxGP1PJ/8O8RnX+uAMSR4V68IJ8XqVsptaiW5oafFcuD4livbcRmA==",
             "license": "Apache-2.0",
             "dependencies": {
-                "@gi.ts/parser": "^4.0.0-beta.23",
+                "@gi.ts/parser": "^4.0.0-beta.25",
                 "colorette": "^2.0.20",
                 "ejs": "^3.1.10",
-                "glob": "^11.0.1",
+                "glob": "^11.0.3",
                 "lodash": "^4.17.21"
             },
             "engines": {
@@ -606,72 +606,66 @@
             }
         },
         "node_modules/cliui": {
-            "version": "8.0.1",
-            "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
-            "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+            "version": "9.0.1",
+            "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz",
+            "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==",
             "license": "ISC",
             "dependencies": {
-                "string-width": "^4.2.0",
-                "strip-ansi": "^6.0.1",
-                "wrap-ansi": "^7.0.0"
+                "string-width": "^7.2.0",
+                "strip-ansi": "^7.1.0",
+                "wrap-ansi": "^9.0.0"
             },
             "engines": {
-                "node": ">=12"
+                "node": ">=20"
             }
         },
-        "node_modules/cliui/node_modules/ansi-regex": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-            "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+        "node_modules/cliui/node_modules/ansi-styles": {
+            "version": "6.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
+            "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
             "license": "MIT",
             "engines": {
-                "node": ">=8"
+                "node": ">=12"
+            },
+            "funding": {
+                "url": "https://github.com/chalk/ansi-styles?sponsor=1"
             }
         },
         "node_modules/cliui/node_modules/emoji-regex": {
-            "version": "8.0.0",
-            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-            "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+            "version": "10.4.0",
+            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+            "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
             "license": "MIT"
         },
         "node_modules/cliui/node_modules/string-width": {
-            "version": "4.2.3",
-            "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
-            "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+            "version": "7.2.0",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+            "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
             "license": "MIT",
             "dependencies": {
-                "emoji-regex": "^8.0.0",
-                "is-fullwidth-code-point": "^3.0.0",
-                "strip-ansi": "^6.0.1"
+                "emoji-regex": "^10.3.0",
+                "get-east-asian-width": "^1.0.0",
+                "strip-ansi": "^7.1.0"
             },
             "engines": {
-                "node": ">=8"
-            }
-        },
-        "node_modules/cliui/node_modules/strip-ansi": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-            "license": "MIT",
-            "dependencies": {
-                "ansi-regex": "^5.0.1"
+                "node": ">=18"
             },
-            "engines": {
-                "node": ">=8"
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
         "node_modules/cliui/node_modules/wrap-ansi": {
-            "version": "7.0.0",
-            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
-            "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+            "version": "9.0.0",
+            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz",
+            "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==",
             "license": "MIT",
             "dependencies": {
-                "ansi-styles": "^4.0.0",
-                "string-width": "^4.1.0",
-                "strip-ansi": "^6.0.0"
+                "ansi-styles": "^6.2.1",
+                "string-width": "^7.0.0",
+                "strip-ansi": "^7.1.0"
             },
             "engines": {
-                "node": ">=10"
+                "node": ">=18"
             },
             "funding": {
                 "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
@@ -879,6 +873,18 @@
                 "node": "6.* || 8.* || >= 10.*"
             }
         },
+        "node_modules/get-east-asian-width": {
+            "version": "1.3.0",
+            "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz",
+            "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==",
+            "license": "MIT",
+            "engines": {
+                "node": ">=18"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
+            }
+        },
         "node_modules/glob": {
             "version": "11.0.3",
             "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz",
@@ -1210,15 +1216,6 @@
                 "url": "https://github.com/prettier/prettier?sponsor=1"
             }
         },
-        "node_modules/require-directory": {
-            "version": "2.1.1",
-            "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
-            "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
-            "license": "MIT",
-            "engines": {
-                "node": ">=0.10.0"
-            }
-        },
         "node_modules/resolve-from": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
@@ -1602,71 +1599,52 @@
             }
         },
         "node_modules/yargs": {
-            "version": "17.7.2",
-            "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
-            "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+            "version": "18.0.0",
+            "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz",
+            "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==",
             "license": "MIT",
             "dependencies": {
-                "cliui": "^8.0.1",
+                "cliui": "^9.0.1",
                 "escalade": "^3.1.1",
                 "get-caller-file": "^2.0.5",
-                "require-directory": "^2.1.1",
-                "string-width": "^4.2.3",
+                "string-width": "^7.2.0",
                 "y18n": "^5.0.5",
-                "yargs-parser": "^21.1.1"
+                "yargs-parser": "^22.0.0"
             },
             "engines": {
-                "node": ">=12"
+                "node": "^20.19.0 || ^22.12.0 || >=23"
             }
         },
         "node_modules/yargs-parser": {
-            "version": "21.1.1",
-            "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
-            "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+            "version": "22.0.0",
+            "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz",
+            "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==",
             "license": "ISC",
             "engines": {
-                "node": ">=12"
-            }
-        },
-        "node_modules/yargs/node_modules/ansi-regex": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-            "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-            "license": "MIT",
-            "engines": {
-                "node": ">=8"
+                "node": "^20.19.0 || ^22.12.0 || >=23"
             }
         },
         "node_modules/yargs/node_modules/emoji-regex": {
-            "version": "8.0.0",
-            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
-            "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+            "version": "10.4.0",
+            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz",
+            "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==",
             "license": "MIT"
         },
         "node_modules/yargs/node_modules/string-width": {
-            "version": "4.2.3",
-            "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
-            "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+            "version": "7.2.0",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz",
+            "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==",
             "license": "MIT",
             "dependencies": {
-                "emoji-regex": "^8.0.0",
-                "is-fullwidth-code-point": "^3.0.0",
-                "strip-ansi": "^6.0.1"
+                "emoji-regex": "^10.3.0",
+                "get-east-asian-width": "^1.0.0",
+                "strip-ansi": "^7.1.0"
             },
             "engines": {
-                "node": ">=8"
-            }
-        },
-        "node_modules/yargs/node_modules/strip-ansi": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-            "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-            "license": "MIT",
-            "dependencies": {
-                "ansi-regex": "^5.0.1"
+                "node": ">=18"
             },
-            "engines": {
-                "node": ">=8"
+            "funding": {
+                "url": "https://github.com/sponsors/sindresorhus"
             }
         },
         "node_modules/yoctocolors-cjs": {
diff --git a/lib/pkgs/mk-types/package.json b/lib/pkgs/mk-types/package.json
index e05f0560..48b6b734 100644
--- a/lib/pkgs/mk-types/package.json
+++ b/lib/pkgs/mk-types/package.json
@@ -1,5 +1,5 @@
 {
     "dependencies": {
-        "@ts-for-gir/cli": "4.0.0-beta.23"
+        "@ts-for-gir/cli": "4.0.0-beta.25"
     }
 }
diff --git a/modules/ags/config/default.nix b/modules/ags/config/default.nix
index 3d140780..6559185b 100644
--- a/modules/ags/config/default.nix
+++ b/modules/ags/config/default.nix
@@ -1,3 +1,3 @@
 {
-  npmDepsHash = "sha256-nM4iZ70gDSw/lPaz9700U71+H+CTz5JA218cdkbMzNU=";
+  npmDepsHash = "sha256-X/ACIwYEj+0eKN9AGJOgnkWkPEqXyUi87ZeDnqtgqTE=";
 }
diff --git a/modules/ags/config/package-lock.json b/modules/ags/config/package-lock.json
index b9b665c5..d0f859e5 100644
--- a/modules/ags/config/package-lock.json
+++ b/modules/ags/config/package-lock.json
@@ -12,20 +12,20 @@
                 "@stylistic/eslint-plugin": "4.4.1",
                 "astal": "https://gitpkg.vercel.app/Aylur/astal/lang/gjs/src?ca3190d077d09b9597e7de471a8e388a08f112e9",
                 "eslint": "9.29.0",
-                "eslint-plugin-jsdoc": "51.0.1",
+                "eslint-plugin-jsdoc": "51.1.0",
                 "fzf": "0.5.2",
                 "jiti": "2.4.2",
                 "typescript-eslint": "8.34.1"
             }
         },
         "node_modules/@es-joy/jsdoccomment": {
-            "version": "0.50.2",
-            "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.50.2.tgz",
-            "integrity": "sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==",
+            "version": "0.51.1",
+            "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.51.1.tgz",
+            "integrity": "sha512-fPn7AW/unCg3JRLt8Wg44HLRVkAEfkFIXiGRJbeOIrd7Hgl4iOFwVHpvVR8I5hJYpn5mNFWwIXR6A16ZRA/M9w==",
             "license": "MIT",
             "dependencies": {
-                "@types/estree": "^1.0.6",
-                "@typescript-eslint/types": "^8.11.0",
+                "@types/estree": "^1.0.8",
+                "@typescript-eslint/types": "^8.34.1",
                 "comment-parser": "1.4.1",
                 "esquery": "^1.6.0",
                 "jsdoc-type-pratt-parser": "~4.1.0"
@@ -621,12 +621,12 @@
             }
         },
         "node_modules/are-docs-informative": {
-            "version": "0.1.1",
-            "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.1.1.tgz",
-            "integrity": "sha512-sqRsNQBwbKLRX0jV5Cu5uzmtflf892n4Vukz7T659ebL4pz3mpOqCMU7lxMoBTFwnp10E3YB5ZcyHM41W5bcDA==",
+            "version": "0.0.2",
+            "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz",
+            "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==",
             "license": "MIT",
             "engines": {
-                "node": ">=18"
+                "node": ">=14"
             }
         },
         "node_modules/argparse": {
@@ -835,24 +835,24 @@
             }
         },
         "node_modules/eslint-plugin-jsdoc": {
-            "version": "51.0.1",
-            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-51.0.1.tgz",
-            "integrity": "sha512-nnH6O8uk0Wp5EvHlVEPESKdGWTlu5g1tfBUZmL/jMZLBpUtttxxW+9hPzTMCYmYsQ3HwDsJdHJAiaDRKsP6iUg==",
+            "version": "51.1.0",
+            "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-51.1.0.tgz",
+            "integrity": "sha512-dWyjRvQcAuFHZUTUaJEw7OQ6XziNlbz2wZNt6QuLUHwYMnOWzs6vGSikR/ZSeh+IFHjdH+91AKf+CwYjlJ4kVA==",
             "license": "BSD-3-Clause",
             "dependencies": {
-                "@es-joy/jsdoccomment": "~0.50.2",
-                "are-docs-informative": "^0.1.1",
+                "@es-joy/jsdoccomment": "~0.51.1",
+                "are-docs-informative": "^0.0.2",
                 "comment-parser": "1.4.1",
                 "debug": "^4.4.1",
                 "escape-string-regexp": "^4.0.0",
-                "espree": "^10.3.0",
+                "espree": "^10.4.0",
                 "esquery": "^1.6.0",
                 "parse-imports-exports": "^0.2.4",
                 "semver": "^7.7.2",
                 "spdx-expression-parse": "^4.0.0"
             },
             "engines": {
-                "node": ">=22"
+                "node": ">=20.11.0"
             },
             "peerDependencies": {
                 "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0"
diff --git a/modules/ags/config/package.json b/modules/ags/config/package.json
index 947f0a4f..680ae064 100644
--- a/modules/ags/config/package.json
+++ b/modules/ags/config/package.json
@@ -7,7 +7,7 @@
         "@eslint/js": "9.29.0",
         "@stylistic/eslint-plugin": "4.4.1",
         "eslint": "9.29.0",
-        "eslint-plugin-jsdoc": "51.0.1",
+        "eslint-plugin-jsdoc": "51.1.0",
         "fzf": "0.5.2",
         "jiti": "2.4.2",
         "typescript-eslint": "8.34.1"
diff --git a/modules/wyoming-plus/default.nix b/modules/wyoming-plus/default.nix
index 6d47b806..d571f9e4 100644
--- a/modules/wyoming-plus/default.nix
+++ b/modules/wyoming-plus/default.nix
@@ -10,7 +10,9 @@
 
   cfg = config.services.wyoming;
 
-  forkedPkg = pkgs.callPackage ./pkgs {};
+  forkedPkg = pkgs.callPackage ./pkgs {
+    python3Packages = pkgs.python312Packages;
+  };
 in {
   options.services.wyoming.openwakeword.vadThreshold = mkOption {
     type = types.float;
diff --git a/modules/wyoming-plus/pkgs/default.nix b/modules/wyoming-plus/pkgs/default.nix
index 9713d4c9..3addb82e 100644
--- a/modules/wyoming-plus/pkgs/default.nix
+++ b/modules/wyoming-plus/pkgs/default.nix
@@ -8,7 +8,9 @@
 }: let
   inherit (lib) makeLibraryPath;
 in
-  wyoming-openwakeword.overridePythonAttrs (o: {
+  (wyoming-openwakeword.override {
+    inherit python3Packages;
+  }).overridePythonAttrs (o: {
     version = o.version + "-vad";
 
     # https://github.com/rhasspy/wyoming-openwakeword/pull/17
diff --git a/overlays/misc-fixes/default.nix b/overlays/misc-fixes/default.nix
index 4f56cc13..d6e12fea 100644
--- a/overlays/misc-fixes/default.nix
+++ b/overlays/misc-fixes/default.nix
@@ -19,14 +19,19 @@ final: prev: {
     inherit src;
   });
 
-  # FIXME: https://github.com/neovim/nvim-lspconfig/issues/3892
-  neovim-unwrapped = prev.neovim-unwrapped.overrideAttrs (o: rec {
-    version = "0.11.1";
+  # FIXME: https://github.com/NixOS/nixpkgs/issues/418453
+  waydroid = prev.waydroid.override {
+    python3Packages = final.python312Packages;
+  };
+
+  # FIXME: https://pr-tracker.nelim.org/?pr=418139
+  liburing = prev.liburing.overrideAttrs (o: rec {
+    version = "2.11";
     src = final.fetchFromGitHub {
-      owner = "neovim";
-      repo = "neovim";
-      tag = "v${version}";
-      hash = "sha256-kJvKyNjpqIKa5aBi62jHTCb1KxQ4YgYtBh/aNYZSeO8=";
+      owner = "axboe";
+      repo = "liburing";
+      tag = "liburing-${version}";
+      hash = "sha256-V73QP89WMrL2fkPRbo/TSkfO7GeDsCudlw2Ut5baDzA=";
     };
   });
 
diff --git a/packages/subscleaner/default.nix b/packages/subscleaner/default.nix
index 0d554b4c..c2ff6646 100644
--- a/packages/subscleaner/default.nix
+++ b/packages/subscleaner/default.nix
@@ -3,7 +3,6 @@
   lib,
   subscleaner-src,
   # deps
-  hatch,
   python3Packages,
   ...
 }: let
@@ -20,7 +19,7 @@ in
 
     src = subscleaner-src;
 
-    build-system = [hatch];
+    build-system = with python3Packages; [hatchling];
 
     dependencies = with python3Packages; [
       pysrt
diff --git a/scopedPackages/firefox-addons/generated-firefox-addons.nix b/scopedPackages/firefox-addons/generated-firefox-addons.nix
index a9074aa0..600b3fde 100644
--- a/scopedPackages/firefox-addons/generated-firefox-addons.nix
+++ b/scopedPackages/firefox-addons/generated-firefox-addons.nix
@@ -315,10 +315,10 @@
   };
   "undoclosetabbutton" = buildFirefoxXpiAddon {
     pname = "undoclosetabbutton";
-    version = "8.0.0";
+    version = "8.1.0";
     addonId = "{4853d046-c5a3-436b-bc36-220fd935ee1d}";
-    url = "https://addons.mozilla.org/firefox/downloads/file/4212173/undoclosetabbutton-8.0.0.xpi";
-    sha256 = "c83a058c417f98d75e62ab310e2995971bf79c99cd83cf1dcbd8a44797aa60c4";
+    url = "https://addons.mozilla.org/firefox/downloads/file/4513641/undoclosetabbutton-8.1.0.xpi";
+    sha256 = "ff9a47b466fe29a860a1846a65502e327717945dc9f7ce627c9cd64a2859baab";
     meta = with lib; {
       homepage = "https://github.com/M-Reimer/undoclosetab";
       description = "Allows you to restore the tab you just closed with a single click—plus it can offer a list of recently closed tabs within a convenient context menu.";
diff --git a/scopedPackages/lovelace-components/material-rounded-theme/default.nix b/scopedPackages/lovelace-components/material-rounded-theme/default.nix
index 1eab9a67..903e0829 100644
--- a/scopedPackages/lovelace-components/material-rounded-theme/default.nix
+++ b/scopedPackages/lovelace-components/material-rounded-theme/default.nix
@@ -6,7 +6,7 @@
   ...
 }: let
   pname = "material-rounded-theme";
-  version = "4.0.6";
+  version = "4.0.7";
 in
   stdenv.mkDerivation {
     inherit pname version;
@@ -15,7 +15,7 @@ in
       owner = "Nerwyn";
       repo = pname;
       rev = version;
-      hash = "sha256-KWr2luWOqBg3LXwB7F38DEPSu+FhBxkHPYRTMkU01gA=";
+      hash = "sha256-cx3DrAwd6gsXbMEOBzgU+GwFrl96uN93GQf8cZ8F8SU=";
     };
 
     installPhase = ''