diff --git a/pkgs/tools/misc/mvebu64boot/default.nix b/pkgs/tools/misc/mvebu64boot/default.nix
new file mode 100644
index 000000000000..c2bb63186c3f
--- /dev/null
+++ b/pkgs/tools/misc/mvebu64boot/default.nix
@@ -0,0 +1,34 @@
+{ fetchFromGitHub
+, stdenv
+, lib
+, ncurses
+}:
+
+stdenv.mkDerivation rec {
+  pname = "mvebu64boot";
+  version = "unstable-2022-10-20";
+
+  src = fetchFromGitHub {
+    owner = "pali";
+    repo = "mvebu64boot";
+    rev = "e7ca70eff2dc278607cc07f6654bbddacb2e4ff6";
+    hash = "sha256-Y2yVr/BuOah5yMvF5EvM7frEUY8r+Hf4bNIKVkHgvQs=";
+  };
+
+  buildInputs = [
+    ncurses
+  ];
+
+  installPhase = ''
+    runHook preInstall
+    install -D mvebu64boot $out/bin/mvebu64boot
+    runHook postInstall
+  '';
+
+  meta = with lib; {
+    description = "Boot 64-bit Marvell EBU SoC over UART";
+    license = licenses.gpl3Only;
+    maintainers = with maintainers; [ lukegb ];
+    platforms = platforms.all;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 9c36c0e4d78b..080d6dc5ba03 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -9970,6 +9970,8 @@ with pkgs;
 
   multitail = callPackage ../tools/misc/multitail { };
 
+  mvebu64boot = callPackage ../tools/misc/mvebu64boot { };
+
   mx-puppet-discord = callPackage ../servers/mx-puppet-discord { };
 
   mx-takeover = callPackage ../tools/security/mx-takeover { };