Skip to content

Commit 00b3247

Browse files
committed
Use .sources format for apt repositories and improve GPG key downloads
1 parent f927431 commit 00b3247

4 files changed

Lines changed: 68 additions & 35 deletions

File tree

apt/install_software.sh

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/usr/bin/env bash
2-
set -eu
2+
set -euo pipefail
33

44
# Before running this script on Kubuntu, enable Flatpak backend here:
55
# https://flatpak.org/setup/Kubuntu
@@ -20,13 +20,13 @@ else
2020
fi
2121
set -u
2222

23+
ARCH="$(dpkg --print-architecture)"
2324
CHASSIS="$(hostnamectl chassis)"
25+
FOREIGN_ARCHS="$(dpkg --print-foreign-architectures)}"
2426

2527
echo "Configuring apt/dpkg architectures."
26-
ARCH="$(uname -i)"
27-
FOREIGN_ARCHS="$(dpkg --print-foreign-architectures)}"
28-
if [ "${ARCH}" = "x86_64" ] && [[ "${FOREIGN_ARCHS}" != *"i386"* ]]; then
29-
echo "Detected x86_64 architecture where i386 is not enabled. Enabling i386."
28+
if [ "${ARCH}" = "amd64" ] && [[ "${FOREIGN_ARCHS}" != *"i386"* ]]; then
29+
echo "Detected amd64 architecture where i386 is not enabled. Enabling i386."
3030
dpkg --add-architecture i386
3131
fi
3232

apt/setup_sources.sh

Lines changed: 60 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,25 @@
11
#!/usr/bin/env bash
2-
set -eu
2+
set -euo pipefail
33
# Setup sources
44

55
if [ "${EUID}" -ne 0 ]; then
66
echo "This script should be run as root."
77
exit 1
88
fi
99

10+
ARCH="$(dpkg --print-architecture)"
1011
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
12+
REPO_DIR="$(dirname "${SCRIPT_DIR}")"
13+
14+
download_key() {
15+
# Download a GPG key
16+
# The shorthand for the curl options is -fsSL
17+
curl --fail --silent --show-error --location "$1" | gpg --dearmor --yes -o "$2"
18+
}
1119

1220
mkdir -p /etc/apt/keyrings
1321
apt update
14-
apt install apt-transport-https ca-certificates curl gpg-agent ubuntu-dbgsym-keyring wget
22+
apt install apt-transport-https ca-certificates curl gpg-agent ubuntu-dbgsym-keyring
1523

1624
# -----
1725
# Ubuntu repos
@@ -23,62 +31,87 @@ echo "Types: deb
2331
URIs: http://ddebs.ubuntu.com/
2432
Suites: $(lsb_release -cs) $(lsb_release -cs)-updates $(lsb_release -cs)-proposed
2533
Components: main restricted universe multiverse
26-
Signed-by: /usr/share/keyrings/ubuntu-dbgsym-keyring.gpg" | \
27-
sudo tee /etc/apt/sources.list.d/ddebs.sources
34+
Signed-By: /usr/share/keyrings/ubuntu-dbgsym-keyring.gpg" > /etc/apt/sources.list.d/ddebs.sources
2835

2936
# -----
3037
# Custom repos in alphabetical order
3138
# -----
3239

3340
# Claude
34-
curl -fsSL https://pkg.claude-desktop-debian.dev/KEY.gpg | gpg --dearmor -o /usr/share/keyrings/claude-desktop.gpg
35-
echo "deb [signed-by=/usr/share/keyrings/claude-desktop.gpg arch=amd64,arm64] https://pkg.claude-desktop-debian.dev stable main" | sudo tee /etc/apt/sources.list.d/claude-desktop.list
41+
download_key "https://pkg.claude-desktop-debian.dev/KEY.gpg" /usr/share/keyrings/claude-desktop.gpg
42+
echo "Types: deb
43+
URIs: https://pkg.claude-desktop-debian.dev
44+
Suites: stable
45+
Components: main
46+
Signed-By: /usr/share/keyrings/claude-desktop.gpg
47+
Architectures: ${ARCH}" > /etc/apt/sources.list.d/claude-desktop.sources
3648

3749
# Docker
3850
# https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
39-
install -m 0755 -d /etc/apt/keyrings
40-
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
41-
chmod a+r /etc/apt/keyrings/docker.asc
42-
echo \
43-
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
44-
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
45-
tee /etc/apt/sources.list.d/docker.list > /dev/null
51+
download_key "https://download.docker.com/linux/ubuntu/gpg" /etc/apt/keyrings/docker.gpg
52+
echo "Types: deb
53+
URIs: https://download.docker.com/linux/ubuntu
54+
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
55+
Components: stable
56+
Signed-By: /etc/apt/keyrings/docker.gpg
57+
Architectures: ${ARCH}" > /etc/apt/sources.list.d/docker.sources
4658

4759
# eduVPN
48-
wget -O- https://app.eduvpn.org/linux/v4/deb/app+linux@eduvpn.org.asc | gpg --dearmor | tee /usr/share/keyrings/eduvpn-v4.gpg >/dev/null
49-
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/eduvpn-v4.gpg] https://app.eduvpn.org/linux/v4/deb/ plucky main" | tee /etc/apt/sources.list.d/eduvpn-v4.list
60+
download_key "https://app.eduvpn.org/linux/v4/deb/app+linux@eduvpn.org.asc" /usr/share/keyrings/eduvpn-v4.gpg
61+
echo "Types: deb
62+
URIs: https://app.eduvpn.org/linux/v4/deb/
63+
Suites: plucky
64+
Components: main
65+
Signed-By: /usr/share/keyrings/eduvpn-v4.gpg
66+
Architectures: ${ARCH}" > /etc/apt/sources.list.d/eduvpn-v4.sources
5067

5168
# Google Antigravity
52-
curl -fsSL https://us-central1-apt.pkg.dev/doc/repo-signing-key.gpg | gpg --dearmor --yes -o /etc/apt/keyrings/antigravity-repo-key.gpg
53-
echo "deb [signed-by=/etc/apt/keyrings/antigravity-repo-key.gpg] https://us-central1-apt.pkg.dev/projects/antigravity-auto-updater-dev/ antigravity-debian main" | tee /etc/apt/sources.list.d/antigravity.list > /dev/null
69+
download_key "https://us-central1-apt.pkg.dev/doc/repo-signing-key.gpg" /etc/apt/keyrings/antigravity-repo-key.gpg
70+
echo "Types: deb
71+
URIs: https://us-central1-apt.pkg.dev/projects/antigravity-auto-updater-dev/
72+
Suites: antigravity-debian
73+
Components: main
74+
Signed-By: /etc/apt/keyrings/antigravity-repo-key.gpg
75+
Architectures: ${ARCH}" > /etc/apt/sources.list.d/antigravity.sources
5476

5577
# Intel oneAPI
5678
# https://www.intel.com/content/www/us/en/developer/tools/oneapi/hpc-toolkit-download.html
57-
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null
58-
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | tee /etc/apt/sources.list.d/oneAPI.list
79+
download_key "https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB" /usr/share/keyrings/oneapi-archive-keyring.gpg
80+
echo "Types: deb
81+
URIs: https://apt.repos.intel.com/oneapi
82+
Suites: all
83+
Components: main
84+
Signed-By: /usr/share/keyrings/oneapi-archive-keyring.gpg" > /etc/apt/sources.list.d/oneAPI.sources
5985

6086
# Nvidia CUDA
61-
. "$(dirname "${SCRIPT_DIR}")/drivers/setup_nvidia_repos.sh"
87+
. "${REPO_DIR}/drivers/setup_nvidia_repos.sh"
6288

6389
# Signal
6490
# https://signal.org/download/
65-
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > signal-desktop-keyring.gpg
66-
cat signal-desktop-keyring.gpg | tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
91+
download_key "https://updates.signal.org/desktop/apt/keys.asc" /usr/share/keyrings/signal-desktop-keyring.gpg
6792
# The distro name has been "xenial" for quite a while
68-
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' |\
69-
tee /etc/apt/sources.list.d/signal-xenial.list
93+
echo "Types: deb
94+
URIs: https://updates.signal.org/desktop/apt
95+
Suites: xenial
96+
Components: main
97+
Signed-By: /usr/share/keyrings/signal-desktop-keyring.gpg
98+
Architectures: ${ARCH}" > /etc/apt/sources.list.d/signal-xenial.sources
7099

71100
# Syncthing
72101
# https://apt.syncthing.net/
73-
curl -L -o /etc/apt/keyrings/syncthing-archive-keyring.gpg https://syncthing.net/release-key.gpg
74-
echo "deb [signed-by=/etc/apt/keyrings/syncthing-archive-keyring.gpg] https://apt.syncthing.net/ syncthing stable-v2" | tee /etc/apt/sources.list.d/syncthing.list
102+
download_key "https://syncthing.net/release-key.gpg" /etc/apt/keyrings/syncthing-archive-keyring.gpg
103+
echo "Types: deb
104+
URIs: https://apt.syncthing.net/
105+
Suites: syncthing
106+
Components: stable-v2
107+
Signed-By: /etc/apt/keyrings/syncthing-archive-keyring.gpg" > /etc/apt/sources.list.d/syncthing.sources
75108

76109
# Speedtest
77110
# curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | bash
78111

79112
# TeamViewer
80113
if command -v teamviewer &> /dev/null; then
81-
sudo teamviewer repo default
114+
teamviewer repo default
82115
fi
83116

84117
# -----

drivers/setup_nvidia_repos.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
1313
CUDA_KEYRING="cuda-keyring_1.1-1_all.deb"
1414
CUDA_KEYRING_PATH="${SCRIPT_DIR}/${CUDA_KEYRING}"
1515
wget "https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/${CUDA_KEYRING}" -O "${CUDA_KEYRING_PATH}"
16-
apt install "${CUDA_KEYRING_PATH}"
16+
apt install curl "${CUDA_KEYRING_PATH}"
1717

1818
# Nvidia Container Toolkit
19-
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
19+
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | gpg --dearmor --yes -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
2020
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
2121
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
2222
tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

zsh/custom/utils.zsh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# Hyphens are probably better, since they're easire to write.
55
# https://unix.stackexchange.com/a/168222/
66

7-
apt-rdepends-installed () {
7+
apt-rdepends-installed() {
88
# Find installed apt packages which depend on argument(s)
99
# From:
1010
# https://gitlab.com/drjaska-projects/configs/zsh/-/blob/master/.zshrc

0 commit comments

Comments
 (0)