Merge branch 'main' of https://gitea.federated.computer/Federated_Computer/coredesktop
This commit is contained in:
@@ -71,6 +71,8 @@ The scripts install lots of useful software. There are (4) main ways software is
|
|||||||
|
|
||||||
Pacman installs software from the "packages.conf" file. It installs software such as neovim, tmux, Go, Rust, Docker, Tailscale, Element, LibreOffice, etc. Tell me if you want other tools or submit a pull request.
|
Pacman installs software from the "packages.conf" file. It installs software such as neovim, tmux, Go, Rust, Docker, Tailscale, Element, LibreOffice, etc. Tell me if you want other tools or submit a pull request.
|
||||||
|
|
||||||
|
Federated Computer's own packages, such as Federated Calendar, come from the `[federated]` repository on Federated Computer's Gitea. CoreDesktop adds it to /etc/pacman.conf and trusts its signing key (fingerprint `6AB7C080D87C74BEE3925A026329376994F18B4E`), so they install and update like any other pacman package. Federated Calendar is installed alongside GNOME Calendar and can invite people to events on your Core's Nextcloud calendars.
|
||||||
|
|
||||||
### AUR
|
### AUR
|
||||||
|
|
||||||
Yay is installed as is the way AUR packages are installed and maintained. Examples include the Helium Browser and Winboat. Helium is made the default browser once; you can choose another in Settings > Apps > Default Apps.
|
Yay is installed as is the way AUR packages are installed and maintained. Examples include the Helium Browser and Winboat. Helium is made the default browser once; you can choose another in Settings > Apps > Default Apps.
|
||||||
|
|||||||
+10
@@ -68,9 +68,14 @@ if [ ! -f "packages.conf" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
source packages.conf
|
source packages.conf
|
||||||
|
source remove-packages.conf
|
||||||
|
|
||||||
echo "Starting full system setup..."
|
echo "Starting full system setup..."
|
||||||
|
|
||||||
|
# Federated Computer's own packages (Federated Calendar, ...)
|
||||||
|
echo "Adding the Federated Computer package repo..."
|
||||||
|
ensure_federated_repo
|
||||||
|
|
||||||
# Bring the system fully up to date before installing anything new
|
# Bring the system fully up to date before installing anything new
|
||||||
echo "Updating system..."
|
echo "Updating system..."
|
||||||
sudo pacman -Sy --needed --noconfirm archlinux-keyring
|
sudo pacman -Sy --needed --noconfirm archlinux-keyring
|
||||||
@@ -97,6 +102,11 @@ else
|
|||||||
echo "yay is already installed."
|
echo "yay is already installed."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Remove replaced packages first, so their replacements don't conflict with them
|
||||||
|
echo "Removing unwanted packages..."
|
||||||
|
remove_packages "${REMOVE_PACMAN[@]}"
|
||||||
|
remove_flatpaks "${REMOVE_FLATPAKS[@]}"
|
||||||
|
|
||||||
# Install packages grouped by category as defined in packages.conf
|
# Install packages grouped by category as defined in packages.conf
|
||||||
echo "Installing system utilities..."
|
echo "Installing system utilities..."
|
||||||
install_packages "${SYSTEM_UTILS[@]}"
|
install_packages "${SYSTEM_UTILS[@]}"
|
||||||
|
|||||||
+8
-7
@@ -81,12 +81,9 @@ DEV_TOOLS=(
|
|||||||
git
|
git
|
||||||
gnome-video-effects
|
gnome-video-effects
|
||||||
go
|
go
|
||||||
herdr
|
# The source-built herdr pins an exact zig version that Arch rarely ships
|
||||||
|
herdr-bin
|
||||||
hugo
|
hugo
|
||||||
# cline-desktop's build aborts without an appindicator library (its PKGBUILD
|
|
||||||
# only lists one as optional); also its tray icon. Here so it's installed
|
|
||||||
# before DESKTOP builds cline-desktop.
|
|
||||||
libayatana-appindicator
|
|
||||||
neovim
|
neovim
|
||||||
nodejs
|
nodejs
|
||||||
npm
|
npm
|
||||||
@@ -107,6 +104,7 @@ DEV_TOOLS=(
|
|||||||
uv
|
uv
|
||||||
vim
|
vim
|
||||||
yazi
|
yazi
|
||||||
|
zig
|
||||||
zsh
|
zsh
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -122,15 +120,18 @@ MAINTENANCE=(
|
|||||||
DESKTOP=(
|
DESKTOP=(
|
||||||
bitwarden
|
bitwarden
|
||||||
cliamp
|
cliamp
|
||||||
cline-desktop
|
# Prebuilt: the source builds of cline-desktop and voxtype break whenever
|
||||||
|
# Arch updates rust or the libraries they compile against
|
||||||
|
cline-desktop-bin
|
||||||
element-desktop
|
element-desktop
|
||||||
|
federated-calendar
|
||||||
gnome
|
gnome
|
||||||
gnome-tweaks
|
gnome-tweaks
|
||||||
helium-browser-bin
|
helium-browser-bin
|
||||||
kitty
|
kitty
|
||||||
libreoffice-fresh
|
libreoffice-fresh
|
||||||
sonarr-bin
|
sonarr-bin
|
||||||
voxtype
|
voxtype-bin
|
||||||
winboat-bin
|
winboat-bin
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -4,10 +4,15 @@
|
|||||||
# Pacman / AUR packages to remove (works for both pacman and yay packages)
|
# Pacman / AUR packages to remove (works for both pacman and yay packages)
|
||||||
REMOVE_PACMAN=(
|
REMOVE_PACMAN=(
|
||||||
alpaca-ai
|
alpaca-ai
|
||||||
|
# Replaced by cline-desktop-bin, herdr-bin and voxtype-bin, which conflict
|
||||||
|
# with them
|
||||||
|
cline-desktop
|
||||||
conky-cli
|
conky-cli
|
||||||
|
herdr
|
||||||
lmstudio-bin
|
lmstudio-bin
|
||||||
neofetch
|
neofetch
|
||||||
steghide
|
steghide
|
||||||
|
voxtype
|
||||||
)
|
)
|
||||||
|
|
||||||
# Flatpak applications to remove
|
# Flatpak applications to remove
|
||||||
|
|||||||
@@ -12,6 +12,11 @@ echo "Removing unwanted packages..."
|
|||||||
remove_packages "${REMOVE_PACMAN[@]}"
|
remove_packages "${REMOVE_PACMAN[@]}"
|
||||||
remove_flatpaks "${REMOVE_FLATPAKS[@]}"
|
remove_flatpaks "${REMOVE_FLATPAKS[@]}"
|
||||||
|
|
||||||
|
# Machines installed before Federated Calendar need the repo before the -Sy
|
||||||
|
# below and install_packages, so this can't wait for a migration
|
||||||
|
echo "Checking the Federated Computer package repo..."
|
||||||
|
ensure_federated_repo || STATUS=1
|
||||||
|
|
||||||
# A machine that hasn't updated in a while can have a keyring too old to verify
|
# A machine that hasn't updated in a while can have a keyring too old to verify
|
||||||
# the new packages. Update it first; the -Su below completes this -Sy.
|
# the new packages. Update it first; the -Su below completes this -Sy.
|
||||||
echo "Updating Arch keyring..."
|
echo "Updating Arch keyring..."
|
||||||
|
|||||||
@@ -36,6 +36,23 @@ install_packages() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FEDERATED_REPO_URL="https://gitea.federated.computer/api/packages/Federated_Computer/arch"
|
||||||
|
FEDERATED_REPO_KEY="6AB7C080D87C74BEE3925A026329376994F18B4E"
|
||||||
|
|
||||||
|
# Add Federated Computer's pacman repo, which Gitea serves and signs, and trust
|
||||||
|
# its key. Does nothing if both are already set up.
|
||||||
|
ensure_federated_repo() {
|
||||||
|
if ! sudo pacman-key --list-keys "$FEDERATED_REPO_KEY" &> /dev/null; then
|
||||||
|
curl -fsSL "$FEDERATED_REPO_URL/repository.key" | sudo pacman-key --add - || return 1
|
||||||
|
sudo pacman-key --lsign-key "$FEDERATED_REPO_KEY" > /dev/null || return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! grep -q '^\[federated\]' /etc/pacman.conf; then
|
||||||
|
printf '\n[federated]\nSigLevel = Required DatabaseRequired\nServer = %s/$repo/$arch\n' \
|
||||||
|
"$FEDERATED_REPO_URL" | sudo tee -a /etc/pacman.conf > /dev/null || return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Function to install pipx applications if not already installed
|
# Function to install pipx applications if not already installed
|
||||||
install_pipx_apps() {
|
install_pipx_apps() {
|
||||||
local installed app status=0
|
local installed app status=0
|
||||||
@@ -64,8 +81,10 @@ remove_packages() {
|
|||||||
local packages=("$@")
|
local packages=("$@")
|
||||||
local to_remove=()
|
local to_remove=()
|
||||||
|
|
||||||
|
# Match the exact name: pacman -Q also finds a package that provides it, such
|
||||||
|
# as herdr-bin for herdr, which pacman -R won't remove by that name
|
||||||
for pkg in "${packages[@]}"; do
|
for pkg in "${packages[@]}"; do
|
||||||
if is_installed "$pkg"; then
|
if [ "$(pacman -Qq "$pkg" 2> /dev/null)" = "$pkg" ]; then
|
||||||
to_remove+=("$pkg")
|
to_remove+=("$pkg")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|||||||
Reference in New Issue
Block a user