We need to patch for PREFIX and s/games/bin anyway,
let's patch $DESTDIR, too
--- a/SConstruct
+++ b/SConstruct
@@ -37,7 +37,7 @@ opts.AddVariables(
 	PathVariable("BUILDDIR", "Directory to store compiled object files in", "build", PathVariable.PathIsDirCreate),
 	PathVariable("BIN_DIR", "Directory to store binaries in", ".", PathVariable.PathIsDirCreate),
 	PathVariable("DESTDIR", "Destination root directory, e.g. if building a package", "", PathVariable.PathAccept),
-	PathVariable("PREFIX", "Directory to install under (will be prefixed by DESTDIR)", "/usr/local", PathVariable.PathIsDirCreate),
+	PathVariable("PREFIX", "Directory to install under (will be prefixed by DESTDIR)", "/usr", PathVariable.PathIsDirCreate),
 )
 opts.Update(env)
 Help(opts.GenerateHelpText(env))
@@ -157,22 +157,22 @@ env.AlwaysBuild("test")
 
 
 # Install the binary:
-env.Install("$DESTDIR$PREFIX/games", sky)
+install = env.Install("$PREFIX/bin", sky)
 
 # Install the desktop file:
-env.Install("$DESTDIR$PREFIX/share/applications", "endless-sky.desktop")
+install += env.Install("$PREFIX/share/applications", "endless-sky.desktop")
 
 # Install app center metadata:
-env.Install("$DESTDIR$PREFIX/share/appdata", "endless-sky.appdata.xml")
+install += env.Install("$PREFIX/share/appdata", "endless-sky.appdata.xml")
 
 # Install icons, keeping track of all the paths.
 # Most Ubuntu apps supply 16, 22, 24, 32, 48, and 256, and sometimes others.
 sizes = ["16x16", "22x22", "24x24", "32x32", "48x48", "128x128", "256x256", "512x512"]
 icons = []
 for size in sizes:
-	destination = "$DESTDIR$PREFIX/share/icons/hicolor/" + size + "/apps/endless-sky.png"
+	destination = "$PREFIX/share/icons/hicolor/" + size + "/apps/endless-sky.png"
 	icons.append(destination)
-	env.InstallAs(destination, "icons/icon_" + size + ".png")
+	install += env.InstallAs(destination, "icons/icon_" + size + ".png")
 
 # If any of those icons changed, also update the cache.
 # Do not update the cache if we're not installing into "usr".
@@ -181,28 +181,30 @@ if env.get("PREFIX").startswith("/usr/")
 	env.Command(
 		[],
 		icons,
-		"gtk-update-icon-cache -t $DESTDIR$PREFIX/share/icons/hicolor/")
+		"gtk-update-icon-cache -t $PREFIX/share/icons/hicolor/")
 
 # Install the man page.
 env.Command(
-	"$DESTDIR$PREFIX/share/man/man6/endless-sky.6.gz",
+	"$PREFIX/share/man/man6/endless-sky.6.gz",
 	"endless-sky.6",
 	"gzip -c $SOURCE > $TARGET")
 
 # Install the data files.
 def RecursiveInstall(env, target, source):
 	rootIndex = len(env.Dir(source).abspath) + 1
+	install = []
 	for node in env.Glob(pathjoin(source, '*')):
 		if node.isdir():
 			name = node.abspath[rootIndex:]
-			RecursiveInstall(env, pathjoin(target, name), node.abspath)
+			install += RecursiveInstall(env, pathjoin(target, name), node.abspath)
 		else:
-			env.Install(target, node)
-RecursiveInstall(env, "$DESTDIR$PREFIX/share/games/endless-sky/data", "data")
-RecursiveInstall(env, "$DESTDIR$PREFIX/share/games/endless-sky/images", "images")
-RecursiveInstall(env, "$DESTDIR$PREFIX/share/games/endless-sky/sounds", "sounds")
-env.Install("$DESTDIR$PREFIX/share/games/endless-sky", "credits.txt")
-env.Install("$DESTDIR$PREFIX/share/games/endless-sky", "keys.txt")
+			install += env.Install(target, node)
+	return install
+install += RecursiveInstall(env, "$PREFIX/share/games/endless-sky/data", "data")
+install += RecursiveInstall(env, "$PREFIX/share/games/endless-sky/images", "images")
+install += RecursiveInstall(env, "$PREFIX/share/games/endless-sky/sounds", "sounds")
+install += env.Install("$PREFIX/share/games/endless-sky", "credits.txt")
+install += env.Install("$PREFIX/share/games/endless-sky", "keys.txt")
 
 # Make the word "install" in the command line do an installation.
-env.Alias("install", "$DESTDIR$PREFIX")
+env.Alias("install", install)
