11#! /usr/bin/env bash
2- set -eu
2+ set -euo pipefail
33# Setup sources
44
55if [ " ${EUID} " -ne 0 ]; then
66 echo " This script should be run as root."
77 exit 1
88fi
99
10+ ARCH=" $( dpkg --print-architecture) "
1011SCRIPT_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
1220mkdir -p /etc/apt/keyrings
1321apt 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
2331URIs: http://ddebs.ubuntu.com/
2432Suites: $( lsb_release -cs) $( lsb_release -cs) -updates $( lsb_release -cs) -proposed
2533Components: 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
80113if command -v teamviewer & > /dev/null; then
81- sudo teamviewer repo default
114+ teamviewer repo default
82115fi
83116
84117# -----
0 commit comments