-curl -s "https://dl-ssl.google.com/linux/linux_signing_key.pub" | apt-key add -
-echo "deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main" >/etc/apt/sources.list.d/google-chrome.list
-
-curl -s "https://packages.cloud.google.com/apt/doc/apt-key.gpg" | apt-key add -
-echo "deb [arch=amd64] https://packages.cloud.google.com/apt cloud-sdk main" >/etc/apt/sources.list.d/google-cloud-sdk.list
-
-curl -s "https://packages.microsoft.com/keys/microsoft.asc" | apt-key add -
-echo "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main" >/etc/apt/sources.list.d/microsoft-edge.list
+add_repo() {
+ local name=$1 key=$2 repo=$3
+ if type -P apt-key ; then
+ # Old Debian systems.
+ curl -s "${key}" | apt-key add -
+ echo "deb [arch=amd64] ${repo}" > /etc/apt/sources.list.d/${name}.list
+ else
+ # New Debian systems (13+).
+ local keypath="/etc/apt/keyrings/${name}.gpg"
+ mkdir -p /etc/apt/keyrings
+ curl -s "${key}" | gpg --dearmor -o - > "${keypath}"
+ echo "deb [arch=amd64 signed-by=${keypath}] ${repo}" > /etc/apt/sources.list.d/${name}.list
+ fi
+}
+
+add_repo \
+ google-chrome \
+ "https://dl-ssl.google.com/linux/linux_signing_key.pub" \
+ "https://dl.google.com/linux/chrome/deb/ stable main"
+
+add_repo \
+ google-cloud-sdk \
+ "https://packages.cloud.google.com/apt/doc/apt-key.gpg" \
+ "https://packages.cloud.google.com/apt cloud-sdk main"
+
+add_repo \
+ microsoft-edge-dev \
+ "https://packages.microsoft.com/keys/microsoft.asc" \
+ "https://packages.microsoft.com/repos/edge stable main"