diff --git a/metropolis/cli/metroctl/install.go b/metropolis/cli/metroctl/install.go
index 10fc9f5..d2ca453 100644
--- a/metropolis/cli/metroctl/install.go
+++ b/metropolis/cli/metroctl/install.go
@@ -1,6 +1,7 @@
 package main
 
 import (
+	"bytes"
 	"crypto/ed25519"
 	"crypto/rand"
 	"encoding/pem"
@@ -12,6 +13,7 @@
 	"github.com/spf13/cobra"
 
 	"source.monogon.dev/metropolis/cli/metroctl/core"
+	"source.monogon.dev/metropolis/cli/pkg/datafile"
 	"source.monogon.dev/metropolis/proto/api"
 )
 
@@ -20,57 +22,20 @@
 	Use:   "install",
 }
 
-// install flags
-var installer *string
-var bundle *string
-
 var genusbCmd = &cobra.Command{
-	Use:     "genusb target --installer=inst.efi --bundle=bundle.bin",
+	Use:     "genusb target",
 	Short:   "Generates a Metropolis installer disk or image.",
-	Example: "metroctl install genusb /dev/sdx --installer=installer_x86_64.efi --bundle=metropolis_dev_x86_64.tar.xz",
+	Example: "metroctl install genusb /dev/sdx",
 	Args:    cobra.ExactArgs(1), // One positional argument: the target
 	Run:     doGenUSB,
 }
 
-// If useInTreeArtifacts is true metroctl should use a bundle and installer
-// directly from the build tree. It is automatically set to true if metroctl is
-// running under bazel run. Specifying either one manually still overrides
-// the in-tree artifacts.
-var useInTreeArtifacts = os.Getenv("BUILD_WORKSPACE_DIRECTORY") != ""
-
-var inTreeInstaller = "metropolis/node/installer/kernel.efi"
-var inTreeBundle = "metropolis/node/node.zip"
-
 // A PEM block type for a Metropolis initial owner private key
 const ownerKeyType = "METROPOLIS INITIAL OWNER PRIVATE KEY"
 
 func doGenUSB(cmd *cobra.Command, args []string) {
-	if useInTreeArtifacts && *installer == "" {
-		installer = &inTreeInstaller
-	}
-	if useInTreeArtifacts && *bundle == "" {
-		bundle = &inTreeBundle
-	}
-	installerFile, err := os.Open(*installer)
-	if err != nil {
-		log.Fatalf("Failed to open installer: %v", err)
-	}
-	installerFileStat, err := installerFile.Stat()
-	if err != nil {
-		log.Fatalf("Failed to stat installer: %v", err)
-	}
-	var bundleFile *os.File
-	var bundleFileStat os.FileInfo
-	if bundle != nil && *bundle != "" {
-		bundleFile, err = os.Open(*bundle)
-		if err != nil {
-			log.Fatalf("Failed to open bundle: %v", err)
-		}
-		bundleFileStat, err = bundleFile.Stat()
-		if err != nil {
-			log.Fatalf("Failed to stat bundle: %v", err)
-		}
-	}
+	installer := datafile.MustGet("metropolis/node/installer/kernel.efi")
+	bundle := datafile.MustGet("metropolis/node/node.zip")
 
 	// TODO(lorenz): Have a key management story for this
 	if err := os.MkdirAll(filepath.Join(xdg.ConfigHome, "metroctl"), 0700); err != nil {
@@ -118,16 +83,14 @@
 
 	installerImageArgs := core.MakeInstallerImageArgs{
 		TargetPath:    args[0],
-		Installer:     installerFile,
-		InstallerSize: uint64(installerFileStat.Size()),
+		Installer:     bytes.NewBuffer(installer),
+		InstallerSize: uint64(len(installer)),
 		NodeParams:    params,
+		Bundle:        bytes.NewBuffer(bundle),
+		BundleSize:    uint64(len(bundle)),
 	}
 
-	if bundleFile != nil {
-		installerImageArgs.Bundle = bundleFile
-		installerImageArgs.BundleSize = uint64(bundleFileStat.Size())
-	}
-
+	log.Printf("Generating installer image (this can take a while, see issues/92).")
 	if err := core.MakeInstallerImage(installerImageArgs); err != nil {
 		log.Fatalf("Failed to create installer: %v", err)
 	}
@@ -136,7 +99,4 @@
 func init() {
 	rootCmd.AddCommand(installCmd)
 	installCmd.AddCommand(genusbCmd)
-
-	bundle = installCmd.PersistentFlags().StringP("bundle", "b", "", "Metropolis bundle file to use")
-	installer = installCmd.PersistentFlags().StringP("installer", "i", "", "Metropolis installer file to use")
 }
