diff --git a/flake.lock b/flake.lock
index 2272d3d..bac1c51 100644
--- a/flake.lock
+++ b/flake.lock
@@ -20,11 +20,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1742669843,
-        "narHash": "sha256-G5n+FOXLXcRx+3hCJ6Rt6ZQyF1zqQ0DL0sWAMn2Nk0w=",
+        "lastModified": 1747542820,
+        "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "1e5b653dff12029333a6546c11e108ede13052eb",
+        "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043",
         "type": "github"
       },
       "original": {
diff --git a/flake.nix b/flake.nix
index 15a9152..3567477 100644
--- a/flake.nix
+++ b/flake.nix
@@ -25,19 +25,10 @@
       {
         packages = {
           default = patosPkgs.image;
-          image = pkgs.callPackage ./pkgs/image {
-            inherit
-              patosPkgs
-              version
-              updateUrl
-              cpuArch
-              secureBoot
-              ;
-          };
+          image = pkgs.callPackage ./pkgs/image { inherit patosPkgs version updateUrl cpuArch secureBoot; };
           rootfs = pkgs.callPackage ./pkgs/rootfs/mkrootfs.nix { inherit patosPkgs version; };
           initrd = pkgs.callPackage ./pkgs/rootfs/mkinitrd.nix { inherit patosPkgs version; };
           kernel = pkgs.callPackage ./pkgs/kernel { };
-          linux-firmware = pkgs.callPackage ./pkgs/linux-firmware { };
           glibc = pkgs.callPackage ./pkgs/glibc { };
           busybox = pkgs.callPackage ./pkgs/busybox { };
           openssl = pkgs.callPackage ./pkgs/openssl { };
@@ -55,122 +46,45 @@
             name = "debug-tools";
             version = "0.0.1";
             packages = [
-              {
-                drv = pkgs.curl;
-                path = "bin/curl";
-              }
-              {
-                drv = pkgs.bash;
-                path = "bin/bash";
-              }
-              {
-                drv = patosPkgs.glibc;
-                path = "bin/ldd";
-              }
-              {
-                drv = pkgs.keyutils;
-                path = "bin/keyctl";
-              }
-              {
-                drv = pkgs.gnutar;
-                path = "bin/tar";
-              }
-              {
-                drv = pkgs.binutils-unwrapped;
-                path = "bin/strings";
-              }
-              {
-                drv = pkgs.strace;
-                path = "bin/strace";
-              }
-              {
-                drv = patosPkgs.tpm2-tools;
-                path = "bin/tpm2";
-              }
-              {
-                drv = patosPkgs.openssl;
-                path = "bin/openssl";
-              }
-              {
-                drv = pkgs.cryptsetup;
-                path = "bin/cryptsetup";
-              }
-              {
-                drv = pkgs.cryptsetup;
-                path = "bin/veritysetup";
-              }
-              {
-                drv = pkgs.erofs-utils;
-                path = "bin/mkfs.erofs";
-              }
+              { drv = pkgs.curl; path = "bin/curl"; }
+              { drv = pkgs.bash; path = "bin/bash"; }
+              { drv = patosPkgs.glibc; path = "bin/ldd"; }
+              { drv = pkgs.util-linux; path = "bin/sfdisk"; }
+              { drv = pkgs.readline.out; path = "lib/libreadline.so.8.2"; }
+              { drv = pkgs.readline.out; path = "lib/libreadline.so.8"; }
+              { drv = pkgs.readline.out; path = "lib/libhistory.so.8.2"; }
+              { drv = pkgs.readline.out; path = "lib/libhistory.so.8"; }
+              { drv = pkgs.ncurses.out; path = "/lib/libncursesw.so.6.5"; }
+              { drv = pkgs.ncurses.out; path = "/lib/libncursesw.so.6"; }
+              { drv = pkgs.keyutils; path = "bin/keyctl"; }
+              { drv = pkgs.gnutar; path = "bin/tar"; }
+              { drv = pkgs.binutils-unwrapped; path = "bin/strings"; }
+              { drv = pkgs.strace; path = "bin/strace"; }
+              { drv = patosPkgs.tpm2-tools; path = "bin/tpm2"; }
+              { drv = patosPkgs.openssl; path = "bin/openssl"; }
+              { drv = pkgs.cryptsetup; path = "bin/cryptsetup"; }
+              { drv = pkgs.cryptsetup; path = "bin/veritysetup"; }
+              { drv = pkgs.erofs-utils; path = "bin/mkfs.erofs"; }
               # shared lib required for cryptsetup
-              {
-                drv = pkgs.popt;
-                path = "lib/libpopt.so.0.0.2";
-              }
-              {
-                drv = pkgs.popt;
-                path = "lib/libpopt.so.0";
-              }
-              {
-                drv = pkgs.popt;
-                path = "lib/libpopt.so";
-              }
+              { drv = pkgs.popt; path = "lib/libpopt.so.0.0.2"; }
+              { drv = pkgs.popt; path = "lib/libpopt.so.0"; }
+              { drv = pkgs.popt; path = "lib/libpopt.so"; }
               # shared lib required for mkfs.erofs
-              {
-                drv = pkgs.lz4.lib;
-                path = "lib/liblz4.so.1.10.0";
-              }
-              {
-                drv = pkgs.lz4.lib;
-                path = "lib/liblz4.so.1";
-              }
-              {
-                drv = pkgs.lz4.lib;
-                path = "lib/liblz4.so";
-              }
+              { drv = pkgs.lz4.lib; path = "lib/liblz4.so.1.10.0"; }
+              { drv = pkgs.lz4.lib; path = "lib/liblz4.so.1"; }
+              { drv = pkgs.lz4.lib; path = "lib/liblz4.so"; }
               # shared lib required for binutils
-              {
-                drv = pkgs.binutils-unwrapped.lib;
-                path = "lib/libsframe.so.1.0.0";
-              }
-              {
-                drv = pkgs.binutils-unwrapped.lib;
-                path = "lib/libsframe.so.1";
-              }
-              {
-                drv = pkgs.binutils-unwrapped.lib;
-                path = "lib/libbfd-2.43.1.so";
-              }
-              {
-                drv = pkgs.binutils-unwrapped.lib;
-                path = "lib/libbfd.so";
-              }
+              { drv = pkgs.binutils-unwrapped.lib; path = "lib/libsframe.so.1.0.0"; }
+              { drv = pkgs.binutils-unwrapped.lib; path = "lib/libsframe.so.1"; }
+              { drv = pkgs.binutils-unwrapped.lib; path = "lib/libbfd-2.44.so"; }
+              { drv = pkgs.binutils-unwrapped.lib; path = "lib/libbfd.so"; }
               # shared lib required for strace
-              {
-                drv = pkgs.elfutils.out;
-                path = "lib/libdw-0.192.so";
-              }
-              {
-                drv = pkgs.elfutils.out;
-                path = "lib/libdw.so.1";
-              }
-              {
-                drv = pkgs.elfutils.out;
-                path = "lib/libdw.so";
-              }
-              {
-                drv = pkgs.elfutils.out;
-                path = "lib/libelf-0.192.so";
-              }
-              {
-                drv = pkgs.elfutils.out;
-                path = "lib/libelf.so.1";
-              }
-              {
-                drv = pkgs.elfutils.out;
-                path = "lib/libelf.so";
-              }
+              { drv = pkgs.elfutils.out; path = "lib/libdw-0.192.so"; }
+              { drv = pkgs.elfutils.out; path = "lib/libdw.so.1"; }
+              { drv = pkgs.elfutils.out; path = "lib/libdw.so"; }
+              { drv = pkgs.elfutils.out; path = "lib/libelf-0.192.so"; }
+              { drv = pkgs.elfutils.out; path = "lib/libelf.so.1"; }
+              { drv = pkgs.elfutils.out; path = "lib/libelf.so"; }
             ];
           };
         };
diff --git a/foo.sh b/foo.sh
deleted file mode 100755
index aefb5d5..0000000
--- a/foo.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/usr/bin/env bash
-out=/tmp/build
-_pick() {
-  local p="$1" f d; shift
-  for f; do
-    d="$out/$p/${f#$out/}"
-    echo mkdir -p "$(dirname "$d")"
-    echo mv "$f" "$d"
-    echo rm -rf "$f"
-
-    echo mkfs.erofs --all-root -Efragments,dedupe,ztailpacking $out/$p.raw $p
-    echo veritysetup format --root-hash-file $out/$p.roothash $out/$p.raw $out/$p.verity
-  done
-}
-
-# _pick amd-ucode usr/lib/firmware/amd-ucode
-
-# _pick linux-firmware-nfp usr/lib/firmware/netronome
-# _pick linux-firmware-marvell usr/lib/firmware/{libertas,mwl8k,mwlwifi,mrvl}
-_pick linux-firmware-qlogic usr/lib/firmware/{qlogic,qed,ql2???_*,c{b,t,t2}fw-*}
-
-# _pick linux-firmware-base usr/lib/firmware
diff --git a/pkgs/kernel/default.nix b/pkgs/kernel/default.nix
index 51a05bf..27e4055 100644
--- a/pkgs/kernel/default.nix
+++ b/pkgs/kernel/default.nix
@@ -1,7 +1,7 @@
 { pkgs }:
 let
-  version = "6.13.8";
-  hash = "sha256-JZr6Wdc9Z2vsKuib6s2UngjVTT9wp/iwp0IxUJV1Grs=";
+  version = "6.14.8";
+  hash = "sha256-YrEuzTB1o1frMgk1ZX3oTgFVKANxfa04P6fMOqSqKQU=";
 in
 (pkgs.callPackage ./manual-config.nix { }) {
   version = "${version}-patos1";
diff --git a/pkgs/kexec-tools/default.nix b/pkgs/kexec-tools/default.nix
index 4ba15ba..7454821 100644
--- a/pkgs/kexec-tools/default.nix
+++ b/pkgs/kexec-tools/default.nix
@@ -14,8 +14,8 @@ stdenv.mkDerivation {
   src = fetchFromGitHub {
     owner = "horms";
     repo = "kexec-tools";
-    rev = "a7fcd424c4c80dea5a2fd5ffa274ffeb8129c790";
-    hash = "sha256-QKE+KCkueA21zNunTMidP9OuZaw0IG5tFDF4UJITTTQ=";
+    rev = "v2.0.31";
+    hash = "sha256-Tgmc8mFlmzzRj7tEaBes7Udw4fRl6cSfe76iPNa3Ffs=";
   };
 
   dontPatchShebangs = true;
diff --git a/pkgs/linux-firmware/default.nix b/pkgs/linux-firmware/default.nix
deleted file mode 100644
index 161b2e4..0000000
--- a/pkgs/linux-firmware/default.nix
+++ /dev/null
@@ -1,38 +0,0 @@
-{
-  stdenv,
-  pkgs,
-}:
-
-stdenv.mkDerivation {
-  pname = pkgs.linux-firmware.name;
-  version = pkgs.linux-firmware.version;
-  src = pkgs.linux-firmware.src;
-
-  buildInputs = with pkgs; [
-    erofs-utils
-    cryptsetup
-  ];
-
-  nativeBuildInputs = with pkgs; [
-    python3
-    rdfind
-    which
-    zstd
-  ];
-
-  noBrokenSymlinks = true;
-
-  installTargets = [
-    "install-zst"
-    "dedup"
-  ];
-
-  # inspo: https://gitlab.archlinux.org/archlinux/packaging/packages/linux-firmware/-/blob/main/PKGBUILD?ref_type=heads#L93
-  makeFlags = [
-    "DESTDIR=$(out)"
-    "ZSTD_CLEVEL=19"
-    "FIRMWAREDIR=/usr/lib/firmware"
-  ];
-
-  postInstall = ./post-install.sh;
-}
diff --git a/pkgs/linux-firmware/post-install.sh b/pkgs/linux-firmware/post-install.sh
deleted file mode 100755
index 2dbe3ca..0000000
--- a/pkgs/linux-firmware/post-install.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-set -ex -uo pipefail
-
-_pick() {
-  local p="$1" f d; shift
-  for f; do
-    d="$out/$p/${f#$out/}"
-    mkdir -p "$(dirname "$d")"
-    mv $out/"$f" "$d"
-    rm -rf $out/"$f"
-  done
-}
-
-_package() {
-  local p="$1"
-  mkdir -p $out/$p/usr/lib/extension-release.d
-  cat << EOF > $out/$p/usr/lib/extension-release.d/extension-release.$p
-ID=patos
-IMAGE_ID=$p
-IMAGE_VERSION=$version
-VERSION_ID=patos
-EOF
-
-  mkfs.erofs --all-root -Efragments,dedupe,ztailpacking $out/$p.raw $out/$p
-  veritysetup format --root-hash-file $out/$p.roothash $out/$p.raw $out/$p.verity
-}
-
-# remove arm64 firmware https://bugs.archlinux.org/task/76583
-rm $out/usr/lib/firmware/mrvl/prestera/mvsw_prestera_fw_arm64-v4.1.img.zst
-
-_pick amd-ucode usr/lib/firmware/amd-ucode
-_package amd-ucode
-
-_pick linux-firmware-nfp usr/lib/firmware/netronome
-_package linux-firmware-nfp
-
-_pick linux-firmware-mellanox usr/lib/firmware/mellanox
-_package linux-firmware-mellanox
-
-_pick linux-firmware-marvell usr/lib/firmware/{libertas,mwl8k,mwlwifi,mrvl}
-_package linux-firmware-marvell
-
-_pick linux-firmware-qcom usr/lib/firmware/qcom
-_package linux-firmware-qcom
-
-_pick linux-firmware-liquidio usr/lib/firmware/liquidio
-_package linux-firmware-liquidio
-
-# _pick linux-firmware-qlogic usr/lib/firmware/{qlogic,qed,ql2???_*,c{b,t,t2}fw-*}
-# _package linux-firmware-qlogic
-
-# _pick linux-firmware-bnx2x usr/lib/firmware/bnx2x*
-# _package linux-firmware-bnx2x
-
-# and the rest is base firmware
-_pick linux-firmware usr/lib/firmware
-_package linux-firmware
-
-# clean up
-# rm -rf $out/usr
diff --git a/pkgs/systemd/default.nix b/pkgs/systemd/default.nix
index a1cb314..fea417a 100644
--- a/pkgs/systemd/default.nix
+++ b/pkgs/systemd/default.nix
@@ -7,7 +7,7 @@
   ...
 }:
 let
-  version = "257.4";
+  version = "257.6";
 
   # Use the command below to update `releaseTimestamp` on every (major) version
   # change. More details in the commentary at mesonFlags.
@@ -27,7 +27,7 @@ stdenv.mkDerivation (finalAttrs: {
     owner = "systemd";
     repo = "systemd";
     rev = "v${version}";
-    hash = "sha256-6rxJUYRq785U6aik5VhQRqG+Ss67lBB6T3eQF+tkyhk=";
+    hash = "sha256-mn/JB/nrOz2TOobu2d+XBH2dVH3vn/HPvWN4Zz6s+SM=";
   };
 
   patches = [ ./skip-verify-esp.patch ];