diff --git a/pkgs/development/libraries/migraphx/default.nix b/pkgs/development/libraries/migraphx/default.nix
new file mode 100644
index 00000000000..1738e991c3a
--- /dev/null
+++ b/pkgs/development/libraries/migraphx/default.nix
@@ -0,0 +1,161 @@
+{ lib
+, stdenv
+, fetchFromGitHub
+, rocmUpdateScript
+, pkg-config
+, cmake
+, rocm-cmake
+, hip
+, clang-tools-extra
+, cppcheck
+, openmp
+, rocblas
+, rocmlir
+, miopengemm
+, miopen
+, protobuf
+, half
+, nlohmann_json
+, msgpack
+, sqlite
+, oneDNN
+, blaze
+, texlive
+, doxygen
+, sphinx
+, docutils
+, ghostscript
+, python3Packages
+, buildDocs ? false
+, buildTests ? false
+}:
+
+let
+ latex = lib.optionalAttrs buildDocs texlive.combine {
+ inherit (texlive) scheme-small
+ latexmk
+ tex-gyre
+ fncychap
+ wrapfig
+ capt-of
+ framed
+ needspace
+ tabulary
+ varwidth
+ titlesec
+ epstopdf;
+ };
+in stdenv.mkDerivation (finalAttrs: {
+ pname = "migraphx";
+ version = "5.4.1";
+
+ outputs = [
+ "out"
+ ] ++ lib.optionals buildDocs [
+ "doc"
+ ] ++ lib.optionals buildTests [
+ "test"
+ ];
+
+ src = fetchFromGitHub {
+ owner = "ROCmSoftwarePlatform";
+ repo = "AMDMIGraphX";
+ rev = "rocm-${finalAttrs.version}";
+ hash = "sha256-afJ4UpZq/NVDeHnCZJyXL4TMFG1KTu/+RHIloptzGGk=";
+ };
+
+ nativeBuildInputs = [
+ pkg-config
+ cmake
+ rocm-cmake
+ hip
+ clang-tools-extra
+ cppcheck
+ python3Packages.python
+ ] ++ lib.optionals buildDocs [
+ latex
+ doxygen
+ sphinx
+ docutils
+ ghostscript
+ python3Packages.sphinx-rtd-theme
+ python3Packages.breathe
+ ];
+
+ buildInputs = [
+ openmp
+ rocblas
+ rocmlir
+ miopengemm
+ miopen
+ protobuf
+ half
+ nlohmann_json
+ msgpack
+ sqlite
+ oneDNN
+ blaze
+ python3Packages.pybind11
+ python3Packages.onnx
+ ];
+
+ cmakeFlags = [
+ "-DCMAKE_POLICY_DEFAULT_CMP0079=NEW"
+ # "-DCMAKE_C_COMPILER=hipcc"
+ # "-DCMAKE_CXX_COMPILER=hipcc"
+ "-DMIGRAPHX_ENABLE_GPU=OFF" # GPU compilation is broken, don't know why
+ "-DMIGRAPHX_ENABLE_CPU=ON"
+ "-DMIGRAPHX_ENABLE_FPGA=ON"
+ "-DMIGRAPHX_ENABLE_MLIR=ON"
+ # Manually define CMAKE_INSTALL_
+ # See: https://github.com/NixOS/nixpkgs/pull/197838
+ "-DCMAKE_INSTALL_BINDIR=bin"
+ "-DCMAKE_INSTALL_LIBDIR=lib"
+ "-DCMAKE_INSTALL_INCLUDEDIR=include"
+ ];
+
+ postPatch = ''
+ patchShebangs tools
+
+ substituteInPlace src/targets/gpu/CMakeLists.txt \
+ --replace "CMAKE_CXX_COMPILER MATCHES \".*clang\\\+\\\+\$\"" "TRUE"
+ '' + lib.optionalString (!buildDocs) ''
+ substituteInPlace CMakeLists.txt \
+ --replace "add_subdirectory(doc)" ""
+ '' + lib.optionalString (!buildTests) ''
+ substituteInPlace CMakeLists.txt \
+ --replace "add_subdirectory(test)" ""
+ '';
+
+ # Unfortunately, it seems like we have to call make on this manually
+ preInstall = lib.optionalString buildDocs ''
+ export HOME=$(mktemp -d)
+ make -j$NIX_BUILD_CORES doc
+ cd ../doc/pdf
+ make -j$NIX_BUILD_CORES
+ cd -
+ '';
+
+ postInstall = lib.optionalString buildDocs ''
+ mv ../doc/html $out/share/doc/migraphx
+ mv ../doc/pdf/MIGraphX.pdf $out/share/doc/migraphx
+ '' + lib.optionalString buildTests ''
+ mkdir -p $test/bin
+ mv bin/test_* $test/bin
+ patchelf $test/bin/test_* --shrink-rpath --allowed-rpath-prefixes /nix/store
+ '';
+
+ passthru.updateScript = rocmUpdateScript {
+ name = finalAttrs.pname;
+ owner = finalAttrs.src.owner;
+ repo = finalAttrs.src.repo;
+ };
+
+ meta = with lib; {
+ description = "AMD's graph optimization engine";
+ homepage = "https://github.com/ROCmSoftwarePlatform/AMDMIGraphX";
+ license = with licenses; [ mit ];
+ maintainers = teams.rocm.members;
+ broken = finalAttrs.version != hip.version;
+ };
+})
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 81c760b031e..7ccec3c70fc 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -15342,6 +15342,12 @@ with pkgs;
stdenv = rocmClangStdenv;
};
+ migraphx = callPackage ../development/libraries/migraphx {
+ inherit (llvmPackages_rocm) clang-tools-extra openmp;
+ stdenv = rocmClangStdenv;
+ rocmlir = rocmlir-rock;
+ };
+
rccl = callPackage ../development/libraries/rccl {
stdenv = rocmClangStdenv;
};