diff --git a/metropolis/test/installer/BUILD.bazel b/metropolis/test/installer/BUILD.bazel
index df62c1c..eeb14df 100644
--- a/metropolis/test/installer/BUILD.bazel
+++ b/metropolis/test/installer/BUILD.bazel
@@ -21,13 +21,13 @@
     visibility = ["//visibility:private"],
     deps = [
         "//metropolis/cli/metroctl/core:go_default_library",
+        "//metropolis/cli/pkg/datafile:go_default_library",
         "//metropolis/node/build/mkimage/osimage:go_default_library",
         "//metropolis/pkg/logbuffer:go_default_library",
         "//metropolis/proto/api:go_default_library",
         "@com_github_diskfs_go_diskfs//:go_default_library",
         "@com_github_diskfs_go_diskfs//disk:go_default_library",
         "@com_github_diskfs_go_diskfs//partition/gpt:go_default_library",
-        "@io_bazel_rules_go//go/tools/bazel:go_default_library",
     ],
 )
 
diff --git a/metropolis/test/installer/main.go b/metropolis/test/installer/main.go
index b36c70d..0a5e5aa 100644
--- a/metropolis/test/installer/main.go
+++ b/metropolis/test/installer/main.go
@@ -31,12 +31,12 @@
 	"syscall"
 	"testing"
 
-	"github.com/bazelbuild/rules_go/go/tools/bazel"
 	diskfs "github.com/diskfs/go-diskfs"
 	"github.com/diskfs/go-diskfs/disk"
 	"github.com/diskfs/go-diskfs/partition/gpt"
 
 	mctl "source.monogon.dev/metropolis/cli/metroctl/core"
+	"source.monogon.dev/metropolis/cli/pkg/datafile"
 	"source.monogon.dev/metropolis/node/build/mkimage/osimage"
 	"source.monogon.dev/metropolis/pkg/logbuffer"
 	"source.monogon.dev/metropolis/proto/api"
@@ -45,12 +45,6 @@
 // Each variable in this block points to either a test dependency or a side
 // effect. These variables are initialized in TestMain using Bazel.
 var (
-	// installerEFIPayload is a filesystem path pointing at the unified kernel
-	// image dependency.
-	installerEFIPayload string
-	// testOSBundle is a filesystem path pointing at the Metropolis installation
-	// bundle.
-	testOSBundle string
 	// installerImage is a filesystem path pointing at the installer image that
 	// is generated during the test, and is removed afterwards.
 	installerImage string
@@ -165,64 +159,18 @@
 }
 
 func TestMain(m *testing.M) {
-	// Initialize global variables holding filesystem paths pointing to runtime
-	// dependencies and side effects.
-	paths := []struct {
-		// res is a pointer to the global variable initialized.
-		res *string
-		// dep states whether the path should be resolved as a dependency, rather
-		// than a side effect.
-		dep bool
-		// src is a source path, based on which res is resolved. In case of
-		// dependencies it must be a path relative to the repository root. For
-		// side effects, it must be just a filename.
-		src string
-	}{
-		{&installerEFIPayload, true, "metropolis/test/installer/kernel.efi"},
-		{&testOSBundle, true, "metropolis/test/installer/testos/testos_bundle.zip"},
-		{&installerImage, false, "installer.img"},
-		{&nodeStorage, false, "stor.img"},
-	}
-	for _, p := range paths {
-		if p.dep {
-			res, err := bazel.Runfile(p.src)
-			if err != nil {
-				log.Fatal(err)
-			}
-			*p.res = res
-		} else {
-			od := os.Getenv("TEST_TMPDIR")
-			// If od is empty, just use the working directory, which is set according
-			// to the rundir attribute of go_test.
-			*p.res = filepath.Join(od, p.src)
-		}
-	}
+	installerImage = filepath.Join(os.Getenv("TEST_TMPDIR"), "installer.img")
+	nodeStorage = filepath.Join(os.Getenv("TEST_TMPDIR"), "stor.img")
 
-	// Build the installer image with metroctl, given the EFI executable
-	// generated by Metropolis buildsystem.
-	installer, err := os.Open(installerEFIPayload)
-	if err != nil {
-		log.Fatalf("Couldn't open the installer EFI executable at %q: %v", installerEFIPayload, err)
-	}
-	info, err := installer.Stat()
-	if err != nil {
-		log.Fatalf("Couldn't stat the installer EFI executable: %v", err)
-	}
-	bundle, err := os.Open(testOSBundle)
-	if err != nil {
-		log.Fatalf("Failed to open TestOS bundle: %v", err)
-	}
-	bundleStat, err := bundle.Stat()
-	if err != nil {
-		log.Fatalf("Failed to stat() TestOS bundle: %v", err)
-	}
+	installer := datafile.MustGet("metropolis/test/installer/kernel.efi")
+	bundle := datafile.MustGet("metropolis/test/installer/testos/testos_bundle.zip")
 	iargs := mctl.MakeInstallerImageArgs{
-		Installer:     installer,
-		InstallerSize: uint64(info.Size()),
+		Installer:     bytes.NewBuffer(installer),
+		InstallerSize: uint64(len(installer)),
 		TargetPath:    installerImage,
 		NodeParams:    &api.NodeParameters{},
-		Bundle:        bundle,
-		BundleSize:    uint64(bundleStat.Size()),
+		Bundle:        bytes.NewBuffer(bundle),
+		BundleSize:    uint64(len(bundle)),
 	}
 	if err := mctl.MakeInstallerImage(iargs); err != nil {
 		log.Fatalf("Couldn't create the installer image at %q: %v", installerImage, err)
