diff --git a/files/etc/apt/preferences.d/microsoft-edge b/files/etc/apt/preferences.d/microsoft-edge new file mode 100644 index 0000000..d0dcb16 --- /dev/null +++ b/files/etc/apt/preferences.d/microsoft-edge @@ -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 diff --git a/files/etc/apt/preferences.d/microsoft-vscode b/files/etc/apt/preferences.d/microsoft-vscode index dc134ac..4820cf6 100644 --- a/files/etc/apt/preferences.d/microsoft-vscode +++ b/files/etc/apt/preferences.d/microsoft-vscode @@ -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 diff --git a/files/etc/apt/preferences.d/nodesource b/files/etc/apt/preferences.d/nodesource new file mode 100644 index 0000000..04221c3 --- /dev/null +++ b/files/etc/apt/preferences.d/nodesource @@ -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 diff --git a/files/etc/apt/preferences.d/yarnpkg b/files/etc/apt/preferences.d/yarnpkg new file mode 100644 index 0000000..37382c7 --- /dev/null +++ b/files/etc/apt/preferences.d/yarnpkg @@ -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 diff --git a/files/etc/apt/sources.list.d/microsoft-edge.list b/files/etc/apt/sources.list.d/microsoft-edge.list new file mode 100644 index 0000000..d86df30 --- /dev/null +++ b/files/etc/apt/sources.list.d/microsoft-edge.list @@ -0,0 +1 @@ +deb [arch=amd64,arm64 signed-by=/usr/local/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/edge stable main diff --git a/files/etc/apt/sources.list.d/microsoft-vscode.list b/files/etc/apt/sources.list.d/microsoft-vscode.list index 1ace724..7ae3ce4 100644 --- a/files/etc/apt/sources.list.d/microsoft-vscode.list +++ b/files/etc/apt/sources.list.d/microsoft-vscode.list @@ -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 diff --git a/files/etc/apt/sources.list.d/nodesource.list b/files/etc/apt/sources.list.d/nodesource.list new file mode 100644 index 0000000..baf5952 --- /dev/null +++ b/files/etc/apt/sources.list.d/nodesource.list @@ -0,0 +1 @@ +deb [signed-by=/usr/local/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x bookworm main diff --git a/files/etc/apt/sources.list.d/yarnpkg.list b/files/etc/apt/sources.list.d/yarnpkg.list new file mode 100644 index 0000000..cdcb447 --- /dev/null +++ b/files/etc/apt/sources.list.d/yarnpkg.list @@ -0,0 +1 @@ +deb [signed-by=/usr/local/share/keyrings/yarnpkg.gpg] https://dl.yarnpkg.com/debian/ stable main diff --git a/files/etc/default/microsoft-edge-beta b/files/etc/default/microsoft-edge-beta new file mode 100644 index 0000000..8620a60 --- /dev/null +++ b/files/etc/default/microsoft-edge-beta @@ -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" diff --git a/files/etc/default/microsoft-edge-dev b/files/etc/default/microsoft-edge-dev new file mode 100644 index 0000000..8620a60 --- /dev/null +++ b/files/etc/default/microsoft-edge-dev @@ -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" diff --git a/files/etc/default/microsoft-edge-stable b/files/etc/default/microsoft-edge-stable new file mode 100644 index 0000000..8620a60 --- /dev/null +++ b/files/etc/default/microsoft-edge-stable @@ -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" diff --git a/files/usr/local/share/keyrings/google-chrome.gpg b/files/usr/local/share/keyrings/google-chrome.gpg index 494036a..acdb00d 100644 Binary files a/files/usr/local/share/keyrings/google-chrome.gpg and b/files/usr/local/share/keyrings/google-chrome.gpg differ diff --git a/files/usr/local/share/keyrings/nodesource.gpg b/files/usr/local/share/keyrings/nodesource.gpg new file mode 100644 index 0000000..4f3ec4e Binary files /dev/null and b/files/usr/local/share/keyrings/nodesource.gpg differ diff --git a/files/usr/local/share/keyrings/yarnpkg.gpg b/files/usr/local/share/keyrings/yarnpkg.gpg new file mode 100644 index 0000000..686583c Binary files /dev/null and b/files/usr/local/share/keyrings/yarnpkg.gpg differ diff --git a/install-system.sh b/install-system.sh index 988a3db..04851de 100755 --- a/install-system.sh +++ b/install-system.sh @@ -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" diff --git a/update-keys.sh b/update-keys.sh index ea056c3..975b981 100755 --- a/update-keys.sh +++ b/update-keys.sh @@ -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