Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add more package repositories #30

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions files/etc/apt/preferences.d/microsoft-edge
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Ignore all packages from this repository by default
Package: *
Pin: origin packages.microsoft.com
Pin-Priority: 1

Package: microsoft-edge-stable
Pin: origin packages.microsoft.com
Pin-Priority: 500

Package: microsoft-edge-beta
Pin: origin packages.microsoft.com
Pin-Priority: 500

Package: microsoft-edge-dev
Pin: origin packages.microsoft.com
Pin-Priority: 500
4 changes: 4 additions & 0 deletions files/etc/apt/preferences.d/microsoft-vscode
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,7 @@ Pin-Priority: 1
Package: code
Pin: origin packages.microsoft.com
Pin-Priority: 500

Package: code-insiders
Pin: origin packages.microsoft.com
Pin-Priority: 500
9 changes: 9 additions & 0 deletions files/etc/apt/preferences.d/nodesource
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Ignore all packages from this repository by default
Package: *
Pin: origin deb.nodesource.com
Pin-Priority: 1

# Node.js
Package: nodejs
Pin: origin deb.nodesource.com
Pin-Priority: 500
8 changes: 8 additions & 0 deletions files/etc/apt/preferences.d/yarnpkg
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Ignore all packages from this repository by default
Package: *
Pin: origin dl.yarnpkg.com
Pin-Priority: 1

Package: yarn
Pin: origin dl.yarnpkg.com
Pin-Priority: 500
1 change: 1 addition & 0 deletions files/etc/apt/sources.list.d/microsoft-edge.list
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
deb [arch=amd64,arm64 signed-by=/usr/local/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/edge stable main
2 changes: 1 addition & 1 deletion files/etc/apt/sources.list.d/microsoft-vscode.list
Original file line number Diff line number Diff line change
@@ -1 +1 @@
deb [arch=amd64 signed-by=/usr/local/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/code stable main
deb [arch=amd64,arm64 signed-by=/usr/local/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/code stable main
1 change: 1 addition & 0 deletions files/etc/apt/sources.list.d/nodesource.list
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
deb [signed-by=/usr/local/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x bookworm main
1 change: 1 addition & 0 deletions files/etc/apt/sources.list.d/yarnpkg.list
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
deb [signed-by=/usr/local/share/keyrings/yarnpkg.gpg] https://dl.yarnpkg.com/debian/ stable main
4 changes: 4 additions & 0 deletions files/etc/default/microsoft-edge-beta
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# These settings are required to prevent the postinst script
# from modifying /etc/apt/sources.list.d
repo_add_once="false"
repo_reenable_on_distupgrade="false"
4 changes: 4 additions & 0 deletions files/etc/default/microsoft-edge-dev
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# These settings are required to prevent the postinst script
# from modifying /etc/apt/sources.list.d
repo_add_once="false"
repo_reenable_on_distupgrade="false"
4 changes: 4 additions & 0 deletions files/etc/default/microsoft-edge-stable
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# These settings are required to prevent the postinst script
# from modifying /etc/apt/sources.list.d
repo_add_once="false"
repo_reenable_on_distupgrade="false"
Binary file modified files/usr/local/share/keyrings/google-chrome.gpg
Binary file not shown.
Binary file added files/usr/local/share/keyrings/nodesource.gpg
Binary file not shown.
Binary file added files/usr/local/share/keyrings/yarnpkg.gpg
Binary file not shown.
63 changes: 51 additions & 12 deletions install-system.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,34 +23,73 @@ echo "--> Removing redundant/unnecessary files..."

FILES="$PROJECT_ROOT/files"

if prompt "Install Chrome repositories? (y/N)"; then
make_directory "/etc/apt/preferences.d"
copy "$FILES/etc/apt/preferences.d/google-chrome" "/etc/apt/preferences.d/google-chrome"
make_directory "/etc/apt/preferences.d"
make_directory "/etc/apt/sources.list.d"
make_directory "/etc/default"
make_directory "/usr/local/share/keyrings"

make_directory "/etc/apt/sources.list.d"
if prompt "Install Google Chrome repositories? (y/N)"; then
copy "$FILES/etc/apt/preferences.d/google-chrome" "/etc/apt/preferences.d/google-chrome"
copy "$FILES/etc/apt/sources.list.d/google-chrome.list" "/etc/apt/sources.list.d/google-chrome.list"

make_directory "/etc/default"
copy "$FILES/etc/default/google-chrome" "/etc/default/google-chrome"

make_directory "/usr/local/share/keyrings"
# Install repository-specific keyring
copy "$FILES/usr/local/share/keyrings/google-chrome.gpg" "/usr/local/share/keyrings/google-chrome.gpg"

# Prevent Chrome from adding repositories and keys, since
# we want to manage these ourselves.
copy "$FILES/etc/default/google-chrome" "/etc/default/google-chrome"
else
remove "/etc/apt/sources.list.d/google-chrome.list"
fi

if prompt "Install Microsoft Edge repositories? (y/N)"; then
copy "$FILES/etc/apt/preferences.d/microsoft-edge" "/etc/apt/preferences.d/microsoft-edge"
copy "$FILES/etc/apt/sources.list.d/microsoft-edge.list" "/etc/apt/sources.list.d/microsoft-edge.list"

# Install repository-specific keyring
copy "$FILES/usr/local/share/keyrings/microsoft.gpg" "/usr/local/share/keyrings/microsoft.gpg"

# Prevent Edge from adding repositories and keys, since
# we want to manage these ourselves.
copy "$FILES/etc/default/microsoft-edge-beta" "/etc/default/microsoft-edge-beta"
copy "$FILES/etc/default/microsoft-edge-dev" "/etc/default/microsoft-edge-dev"
else
remove "/etc/apt/sources.list.d/microsoft-edge.list"
fi

if prompt "Install Microsoft Visual Studio Code repositories? (y/N)"; then
make_directory "/etc/apt/preferences.d"
copy "$FILES/etc/apt/preferences.d/microsoft-vscode" "/etc/apt/preferences.d/microsoft-vscode"

make_directory "/etc/apt/sources.list.d"
copy "$FILES/etc/apt/sources.list.d/microsoft-vscode.list" "/etc/apt/sources.list.d/microsoft-vscode.list"

make_directory "/usr/local/share/keyrings"
# Install repository-specific keyring
copy "$FILES/usr/local/share/keyrings/microsoft.gpg" "/usr/local/share/keyrings/microsoft.gpg"

# VSCode will look for a vscode.list file, but we want to manage
# things manually, so ensure it's empty.
echo >"/etc/apt/sources.list.d/vscode.list"
else
remove "/etc/apt/sources.list.d/microsoft-vscode.list"
fi

if prompt "Install NodeSource repositories? (y/N)"; then
copy "$FILES/etc/apt/preferences.d/nodesource" "/etc/apt/preferences.d/nodesource"
copy "$FILES/etc/apt/sources.list.d/nodesource.list" "/etc/apt/sources.list.d/nodesource.list"

# Install repository-specific keyring
copy "$FILES/usr/local/share/keyrings/nodesource.gpg" "/usr/local/share/keyrings/nodesource.gpg"
else
remove "/etc/apt/sources.list.d/nodesource.list"
fi

if prompt "Install Yarnpkg repositories? (y/N)"; then
copy "$FILES/etc/apt/preferences.d/yarnpkg" "/etc/apt/preferences.d/yarnpkg"
copy "$FILES/etc/apt/sources.list.d/yarnpkg.list" "/etc/apt/sources.list.d/yarnpkg.list"

# Install repository-specific keyring
copy "$FILES/usr/local/share/keyrings/yarnpkg.gpg" "/usr/local/share/keyrings/yarnpkg.gpg"
else
remove "/etc/apt/sources.list.d/yarnpkg.list"
fi

echo
echo "==> system installation completed successfully"
8 changes: 8 additions & 0 deletions update-keys.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,12 @@ pushd "$PROJECT_ROOT/files/usr/local/share/keyrings"
# Microsoft repository signing key (Edge and Code)
curl "${curl_flags[@]}" "https://packages.microsoft.com/keys/microsoft.asc" | \
gpg --dearmor --output="microsoft.gpg"

# NodeSource signing key
curl "${curl_flags[@]}" "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" | \
gpg --dearmor --output="nodesource.gpg"

# Yarnpkg signing key
curl "${curl_flags[@]}" "https://dl.yarnpkg.com/debian/pubkey.gpg" | \
gpg --dearmor --output="yarnpkg.gpg"
popd