From: Andrej Shadura <andrew.shadura@collabora.co.uk>
Date: Sun, 29 Jan 2023 17:34:13 +0100
Subject: Add unofficial Debian and Ubuntu images, default to Debian

---
 src/pkg/utils/utils.go | 39 +++++++++++++++++++++++++++++++++++----
 1 file changed, 35 insertions(+), 4 deletions(-)

diff --git a/src/pkg/utils/utils.go b/src/pkg/utils/utils.go
index 829107a..b8eee3b 100644
--- a/src/pkg/utils/utils.go
+++ b/src/pkg/utils/utils.go
@@ -50,10 +50,10 @@ type Distro struct {
 }
 
 const (
-	containerNamePrefixFallback = "fedora-toolbox"
-	distroFallback              = "fedora"
+	containerNamePrefixFallback = "debian-toolbox"
+	distroFallback              = "debian"
 	idTruncLength               = 12
-	releaseFallback             = "34"
+	releaseFallback             = "unstable"
 )
 
 const (
@@ -112,6 +112,22 @@ var (
 			"ubi8",
 			false,
 		},
+		"debian": {
+			"debian-toolbox",
+			"debian-toolbox",
+			parseReleaseDebian,
+			"quay.io",
+			"toolbx-images",
+			false,
+		},
+		"ubuntu": {
+			"ubuntu-toolbox",
+			"ubuntu-toolbox",
+			parseReleaseIdentity,
+			"quay.io",
+			"toolbx-images",
+			false,
+		},
 	}
 )
 
@@ -138,7 +154,7 @@ func init() {
 	if err == nil {
 		if distroObj, supportedDistro := supportedDistros[hostID]; supportedDistro {
 			release, err := GetHostVersionID()
-			if err == nil {
+			if err == nil && release != "" {
 				containerNamePrefixDefault = distroObj.ContainerNamePrefix
 				distroDefault = hostID
 				releaseDefault = release
@@ -623,6 +639,21 @@ func parseRelease(distro, release string) (string, error) {
 	return release, err
 }
 
+func parseReleaseIdentity(release string) (string, error) {
+	return release, nil
+}
+
+func parseReleaseDebian(release string) (string, error) {
+	releaseN, err := strconv.Atoi(release)
+	if err == nil {
+		if releaseN < 10 {
+			return "", &ParseReleaseError{"The oldest supported Debian release is Debian 10 (Buster)."}
+		}
+	}
+
+	return release, nil
+}
+
 func parseReleaseFedora(release string) (string, error) {
 	if strings.HasPrefix(release, "F") || strings.HasPrefix(release, "f") {
 		release = release[1:]
