diff --git a/jgvariant-ostree/pom.xml b/jgvariant-ostree/pom.xml
index 897efa9..6d67bde 100644
--- a/jgvariant-ostree/pom.xml
+++ b/jgvariant-ostree/pom.xml
@@ -47,6 +47,12 @@
       <artifactId>apiguardian-api</artifactId>
     </dependency>
 
+    <!-- OSTree compression support -->
+    <dependency>
+      <groupId>org.tukaani</groupId>
+      <artifactId>xz</artifactId>
+    </dependency>
+
     <!-- Testing -->
     <dependency>
       <groupId>org.junit.jupiter</groupId>
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaPartPayload.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaPartPayload.java
index 99e093d..ed0f4ff 100644
--- a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaPartPayload.java
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DeltaPartPayload.java
@@ -1,9 +1,14 @@
 package eu.mulk.jgvariant.ostree;
 
 import eu.mulk.jgvariant.core.Decoder;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.UncheckedIOException;
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import java.util.List;
+import org.tukaani.xz.XZInputStream;
 
 /**
  * A payload file from a static delta.
@@ -37,10 +42,24 @@
 
   private static ByteBuffer preparse(ByteBuffer byteBuffer) {
     byte compressionByte = byteBuffer.get(0);
+    var dataSlice = byteBuffer.slice(1, byteBuffer.limit() - 1);
     return switch (compressionByte) {
-      case 0 -> byteBuffer.slice(1, byteBuffer.limit());
-      case (byte) 'x' -> throw new UnsupportedOperationException(
-          "LZMA compression of static deltas is unsupported");
+      case 0 -> dataSlice;
+      case (byte) 'x' -> {
+        try {
+          var dataBytes = new byte[dataSlice.limit()];
+          dataSlice.get(dataBytes);
+          var decompressingInputStream = new XZInputStream(new ByteArrayInputStream(dataBytes));
+
+          var decompressedOutputStream = new ByteArrayOutputStream();
+          decompressingInputStream.transferTo(decompressedOutputStream);
+
+          yield ByteBuffer.wrap(decompressedOutputStream.toByteArray());
+        } catch (IOException e) {
+          // impossible
+          throw new UncheckedIOException(e);
+        }
+      }
       default -> throw new IllegalArgumentException(
           "unrecognized compression byte '%d'".formatted(compressionByte));
     };
diff --git a/jgvariant-ostree/src/main/java/module-info.java b/jgvariant-ostree/src/main/java/module-info.java
index 59b458f..da86412 100644
--- a/jgvariant-ostree/src/main/java/module-info.java
+++ b/jgvariant-ostree/src/main/java/module-info.java
@@ -77,8 +77,9 @@
 module eu.mulk.jgvariant.ostree {
   requires transitive eu.mulk.jgvariant.core;
   requires com.google.errorprone.annotations;
-  requires org.jetbrains.annotations;
   requires org.apiguardian.api;
+  requires org.jetbrains.annotations;
+  requires org.tukaani.xz;
 
   exports eu.mulk.jgvariant.ostree;
 }
diff --git a/jgvariant-parent/pom.xml b/jgvariant-parent/pom.xml
index d209863..a5b330f 100644
--- a/jgvariant-parent/pom.xml
+++ b/jgvariant-parent/pom.xml
@@ -66,6 +66,7 @@
     <inject-resources.version>0.3.0</inject-resources.version>
     <jetbrains-annotations.version>22.0.0</jetbrains-annotations.version>
     <junit-jupiter.version>5.8.2</junit-jupiter.version>
+    <xz.version>1.9</xz.version>
   </properties>
 
   <distributionManagement>
@@ -94,6 +95,13 @@
         <version>${apiguardian.version}</version>
       </dependency>
 
+      <!-- OSTree compression support -->
+      <dependency>
+        <groupId>org.tukaani</groupId>
+        <artifactId>xz</artifactId>
+        <version>1.9</version>
+      </dependency>
+
       <!-- Testing -->
       <dependency>
         <groupId>org.junit.jupiter</groupId>
