diff --git a/pkg/host/github.go b/pkg/host/github.go
index e6dd9d33cc0c6fba38565f8c6bceeec6dc136817..29a7a851a59fd616ff8cfb58eb6eeef52f77cf81 100644
--- a/pkg/host/github.go
+++ b/pkg/host/github.go
@@ -2,16 +2,32 @@ package host
 
 import (
 	"path/filepath"
+	"regexp"
 	"strings"
 )
 
 // ZipURL returns the URL of the zip archive given a github repository URL.
 func ZipURL(url string) string {
+	var version = "master"
+
 	url = strings.TrimSuffix(strings.TrimPrefix(url, "/"), "/")
 
-	if strings.HasSuffix(url, "zip/master") {
+	zipRegex, _ := regexp.Compile(`zip/(\S+)$`)
+	if zipRegex.MatchString(url) {
 		return url
 	}
 
-	return "https://codeload.github.com/" + filepath.Join(url, "/zip/master")
+	// So this could identify a port number, but since we only support github
+	// I don't believe using it as a version modifier is a problem. Though
+	// perhaps we should use something else instead?
+	if strings.Contains(url, ":") {
+		parts := strings.SplitAfter(url, ":")
+
+		url = parts[0]
+		version = parts[1]
+
+		url = strings.TrimSuffix(url, ":")
+	}
+
+	return "https://codeload.github.com/" + filepath.Join(url, "/zip/"+version)
 }