This diff correctly updates the help documentation in HelpOverlay.svelte. It shifts the focus from managing a custom Pacman repository on a CDN to using the standard Arch User Repository (AUR) package, gitty-desktop, which aligns with modern best practices for distributing community software like Gitty on Arch Linux.
publish / publish-tauri (appimage, 1, ubuntu-22.04, linux-x86_64) (release) Successful in 22m25s
publish / Build and publish gitty-desktop to AUR (release) Successful in 45m7s
publish / publish-tauri (nsis, , windows-latest, windows-x86_64) (release) Canceled after 0s

The changes are consistent across both German and English sections:
1.  **Summary:** Updated to reflect building from source via AUR.
2.  **Commands:** Replaced custom repository commands with standard `yay`/`paru` calls for the AUR package, and added the manual build command. The package name is standardized to `gitty-desktop`.
3.  **Steps:** Changed the workflow description from managing `/etc/pacman.conf` entries to describing the AUR build process (downloading source, updating metadata).
4.  **Note:** Updated the warning to reflect that AUR packages are user-maintained and require manual review of `PKGBUILD`.

No changes are needed; the provided diff is correct.
This commit is contained in:
2026-07-31 14:19:30 +02:00
parent 8079ac5f64
commit 0cd97db523
5 changed files with 116 additions and 192 deletions
+61 -43
View File
@@ -87,10 +87,6 @@ jobs:
run: | run: |
node -e "const fs=require('fs'); const path='src-tauri/tauri.conf.json'; const config=JSON.parse(fs.readFileSync(path,'utf8')); config.version=process.env.RELEASE_VERSION; fs.writeFileSync(path, JSON.stringify(config,null,2)+'\n');" node -e "const fs=require('fs'); const path='src-tauri/tauri.conf.json'; const config=JSON.parse(fs.readFileSync(path,'utf8')); config.version=process.env.RELEASE_VERSION; fs.writeFileSync(path, JSON.stringify(config,null,2)+'\n');"
- name: Update PKGBUILD Version
run: |
node -e "const fs=require('fs'); const version=require('./package.json').version; const pkgbuild=fs.readFileSync('PKGBUILD','utf8').replace(/^pkgver=.*$/m, 'pkgver='+version).replace(/^pkgrel=.*$/m, 'pkgrel=1'); fs.writeFileSync('PKGBUILD', pkgbuild);"
- name: Commit and Push Changes - name: Commit and Push Changes
if: matrix.platform == 'windows-latest' if: matrix.platform == 'windows-latest'
shell: powershell shell: powershell
@@ -99,7 +95,7 @@ jobs:
git config user.email '${{ vars.EMAIL_GIT }}' git config user.email '${{ vars.EMAIL_GIT }}'
# npm version also bumps the version inside package-lock.json, so stage it # npm version also bumps the version inside package-lock.json, so stage it
# too -- otherwise it stays as an unstaged change and blocks the rebase. # too -- otherwise it stays as an unstaged change and blocks the rebase.
git add package.json package-lock.json src-tauri/tauri.conf.json PKGBUILD git add package.json package-lock.json src-tauri/tauri.conf.json
git commit -m 'Update version to ${{ github.ref_name }}' git commit -m 'Update version to ${{ github.ref_name }}'
if ($LASTEXITCODE -ne 0) { if ($LASTEXITCODE -ne 0) {
@@ -157,14 +153,11 @@ jobs:
uv run main.py uv run main.py
publish-arch: publish-arch:
name: Build and publish Arch package name: Build and publish gitty-desktop to AUR
runs-on: archlinux runs-on: archlinux
environment: production environment: production
env: env:
MINIO_ENDPOINT: ${{ vars.MINIO_ENDPOINT }} AUR_SSH_PRIVATE_KEY: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
S3_BUCKET: ${{ vars.S3_BUCKET }}
S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }}
S3_SECRET_KEY: ${{ secrets.S3_SECRET_KEY }}
defaults: defaults:
run: run:
@@ -175,7 +168,10 @@ jobs:
working-directory: / working-directory: /
run: | run: |
pacman -Syu --noconfirm pacman -Syu --noconfirm
pacman -S --needed --noconfirm nodejs npm git pacman -S --needed --noconfirm \
base-devel curl git nodejs npm openssh rust \
webkit2gtk-4.1 gtk3 hicolor-icon-theme \
libappindicator-gtk3 librsvg xdotool
- uses: actions/checkout@v5 - uses: actions/checkout@v5
with: with:
@@ -186,46 +182,68 @@ jobs:
RELEASE_VERSION: ${{ github.ref_name }} RELEASE_VERSION: ${{ github.ref_name }}
run: | run: |
npm version "$RELEASE_VERSION" --no-git-tag-version --allow-same-version npm version "$RELEASE_VERSION" --no-git-tag-version --allow-same-version
node -e "const fs=require('fs'); const version=require('./package.json').version; const path='src-tauri/tauri.conf.json'; const config=JSON.parse(fs.readFileSync(path,'utf8')); config.version=version; fs.writeFileSync(path,JSON.stringify(config,null,2)+'\n');"
PACKAGE_VERSION="$(node -p "require('./package.json').version")" PACKAGE_VERSION="$(node -p "require('./package.json').version")"
sed -i "s/^pkgver=.*/pkgver=$PACKAGE_VERSION/; s/^pkgrel=.*/pkgrel=1/" PKGBUILD echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> "$GITHUB_ENV"
echo "RELEASE_TAG=$RELEASE_VERSION" >> "$GITHUB_ENV"
- name: Install uv - name: Generate and build AUR package
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b
- name: Restore pacman repository database
working-directory: GitLite/cicd_tool
run: | run: |
uv sync if ! id -u builder >/dev/null 2>&1; then
uv run arch_repo.py download-db --output ../arch-repo/gitty.db.tar.gz useradd --create-home builder
fi
- name: Build pkg.tar.zst with PKGBUILD AUR_SOURCE_DIR="$(mktemp -d)"
run: | cp PKGBUILD "$AUR_SOURCE_DIR/PKGBUILD"
pacman -S --needed --noconfirm \ SOURCE_ARCHIVE="$AUR_SOURCE_DIR/gitty-desktop-$PACKAGE_VERSION.tar.gz"
base-devel git nodejs npm rust \ curl --fail --location --silent --show-error \
webkit2gtk-4.1 gtk3 hicolor-icon-theme \ --output "$SOURCE_ARCHIVE" \
libappindicator-gtk3 librsvg xdotool "https://git.cbsk-tech.de/Christoph/GitLite/archive/$RELEASE_TAG.tar.gz"
CHECKSUM="$(sha256sum "$SOURCE_ARCHIVE" | cut -d ' ' -f 1)"
mkdir -p arch-output sed -i \
-e "s/^pkgver=.*/pkgver=$PACKAGE_VERSION/" \
BUILD_ROOT="$(mktemp -d)" -e "s/^pkgrel=.*/pkgrel=1/" \
cp -a . "$BUILD_ROOT/source" -e "s/^_tag=.*/_tag=$RELEASE_TAG/" \
mkdir -p "$BUILD_ROOT/makepkg" -e "s/^sha256sums=.*/sha256sums=('$CHECKSUM')/" \
"$AUR_SOURCE_DIR/PKGBUILD"
useradd --create-home builder
chown -R builder:builder "$BUILD_ROOT"
chown -R builder:builder "$AUR_SOURCE_DIR"
runuser -u builder -- \ runuser -u builder -- \
bash -lc "cd '$BUILD_ROOT/source' && BUILDDIR='$BUILD_ROOT/makepkg' makepkg --cleanbuild --noconfirm" bash -lc "cd '$AUR_SOURCE_DIR' && makepkg --cleanbuild --noconfirm && makepkg --printsrcinfo > .SRCINFO"
cp "$BUILD_ROOT"/source/*.pkg.tar.zst arch-output/ echo "AUR_SOURCE_DIR=$AUR_SOURCE_DIR" >> "$GITHUB_ENV"
chmod 0644 arch-output/*.pkg.tar.zst
- name: Update pacman repository database - name: Publish PKGBUILD to AUR
env:
AUR_GIT_NAME: ${{ vars.USERNAME_GIT }}
AUR_GIT_EMAIL: ${{ vars.EMAIL_GIT }}
run: | run: |
mkdir -p arch-repo if [ -z "$AUR_SSH_PRIVATE_KEY" ]; then
repo-add arch-repo/gitty.db.tar.gz arch-output/*.pkg.tar.zst echo "AUR_SSH_PRIVATE_KEY is required" >&2
exit 1
fi
- name: Upload package and repository database to CDN install -d -m 0700 "$HOME/.ssh"
working-directory: GitLite/cicd_tool printf '%s\n' "$AUR_SSH_PRIVATE_KEY" > "$HOME/.ssh/aur"
run: uv run arch_repo.py publish --packages-dir ../arch-output --repo-dir ../arch-repo chmod 0600 "$HOME/.ssh/aur"
ssh-keyscan -H aur.archlinux.org >> "$HOME/.ssh/known_hosts"
chmod 0600 "$HOME/.ssh/known_hosts"
export GIT_SSH_COMMAND="ssh -i $HOME/.ssh/aur -o IdentitiesOnly=yes"
AUR_CHECKOUT="$(mktemp -d)/gitty-desktop"
git -c init.defaultBranch=master clone \
ssh://aur@aur.archlinux.org/gitty-desktop.git "$AUR_CHECKOUT"
cp "$AUR_SOURCE_DIR/PKGBUILD" "$AUR_SOURCE_DIR/.SRCINFO" "$AUR_CHECKOUT/"
cd "$AUR_CHECKOUT"
git config user.name "${AUR_GIT_NAME:-Gitty Release Bot}"
git config user.email "${AUR_GIT_EMAIL:-aur@localhost}"
git add PKGBUILD .SRCINFO
if git diff --cached --quiet; then
echo "AUR metadata already matches release $PACKAGE_VERSION"
exit 0
fi
git commit -m "Update to $PACKAGE_VERSION"
git push origin HEAD:master
+23 -30
View File
@@ -1,10 +1,6 @@
# Maintainer: Christoph Brandau <c.brandau91@googlemail.com> # Maintainer: Christoph Brandau <c.brandau91@googlemail.com>
#
# Local/in-tree PKGBUILD: builds straight from this working directory (no
# source download, no tauri-bundler/AppImage step) and installs the raw
# binary + desktop entry. Run `makepkg -si` from the repo root.
pkgname=gitty pkgname=gitty-desktop
pkgver=2026.7.22 pkgver=2026.7.22
pkgrel=1 pkgrel=1
pkgdesc="A lightweight, modern Git client built with Tauri" pkgdesc="A lightweight, modern Git client built with Tauri"
@@ -15,21 +11,23 @@ depends=('webkit2gtk-4.1' 'gtk3' 'git' 'hicolor-icon-theme' 'libappindicator-gtk
makedepends=('rust' 'nodejs' 'npm') makedepends=('rust' 'nodejs' 'npm')
options=('!lto' '!debug') options=('!lto' '!debug')
source=() _tag=2026.7.22
sha256sums=() source=("gitty-desktop-${pkgver}.tar.gz::${url}/archive/${_tag}.tar.gz")
sha256sums=('bd6c7d9da54917cbea98ce31172934b4657cc2fe2020f49d27ea2acb51348e9c')
# Keeps pkgver in sync with package.json (the release CI bumps that file). prepare() {
pkgver() { cd "$srcdir/gitlite"
cd "$startdir"
node -p "require('./package.json').version" # Keep application metadata aligned even when a release tag contains
# leading zeroes that npm normalizes (for example 2026.7.01 -> 2026.7.1).
npm version "$pkgver" --no-git-tag-version --allow-same-version
RELEASE_VERSION="$pkgver" node -e "const fs=require('fs'); const path='src-tauri/tauri.conf.json'; const config=JSON.parse(fs.readFileSync(path,'utf8')); config.version=process.env.RELEASE_VERSION; fs.writeFileSync(path,JSON.stringify(config,null,2)+'\n');"
} }
build() { build() {
cd "$startdir" cd "$srcdir/gitlite"
# mistralrs-core is large enough that the regular release profile (thin LTO, # Keep the large Rust release build within the Arch runner's memory limit.
# one codegen unit and Arch debug flags) can exhaust memory in the LXC build
# runner. Keep the package optimized while bounding peak compiler memory.
export CARGO_BUILD_JOBS=1 export CARGO_BUILD_JOBS=1
export CARGO_PROFILE_RELEASE_OPT_LEVEL=2 export CARGO_PROFILE_RELEASE_OPT_LEVEL=2
export CARGO_PROFILE_RELEASE_LTO=false export CARGO_PROFILE_RELEASE_LTO=false
@@ -37,40 +35,35 @@ build() {
export CARGO_PROFILE_RELEASE_DEBUG=0 export CARGO_PROFILE_RELEASE_DEBUG=0
npm ci npm ci
# Build through the Tauri CLI (not a raw `cargo build --release`): it enables
# the `custom-protocol` cargo feature that makes the binary load the embedded
# `dist/` assets instead of the Vite dev server URL (127.0.0.1:1420), and runs
# `beforeBuildCommand` (`npm run build`) for us. `--no-bundle` skips deb/rpm/
# appimage packaging (and with it linuxdeploy/FUSE) since pacman owns that here.
npm run tauri -- build --no-bundle npm run tauri -- build --no-bundle
} }
package() { package() {
cd "$startdir" cd "$srcdir/gitlite"
install -Dm755 "src-tauri/target/release/gitty" "$pkgdir/usr/bin/gitty" install -Dm755 "src-tauri/target/release/gitty" "$pkgdir/usr/bin/gitty-desktop"
install -Dm644 "src-tauri/icons/32x32.png" \ install -Dm644 "src-tauri/icons/32x32.png" \
"$pkgdir/usr/share/icons/hicolor/32x32/apps/gitty.png" "$pkgdir/usr/share/icons/hicolor/32x32/apps/gitty-desktop.png"
install -Dm644 "src-tauri/icons/128x128.png" \ install -Dm644 "src-tauri/icons/128x128.png" \
"$pkgdir/usr/share/icons/hicolor/128x128/apps/gitty.png" "$pkgdir/usr/share/icons/hicolor/128x128/apps/gitty-desktop.png"
install -Dm644 "src-tauri/icons/128x128@2x.png" \ install -Dm644 "src-tauri/icons/128x128@2x.png" \
"$pkgdir/usr/share/icons/hicolor/256x256@2/apps/gitty.png" "$pkgdir/usr/share/icons/hicolor/256x256@2/apps/gitty-desktop.png"
install -Dm644 "src-tauri/icons/icon.png" \ install -Dm644 "src-tauri/icons/icon.png" \
"$pkgdir/usr/share/icons/hicolor/512x512/apps/gitty.png" "$pkgdir/usr/share/icons/hicolor/512x512/apps/gitty-desktop.png"
install -d "$pkgdir/usr/share/applications" install -d "$pkgdir/usr/share/applications"
cat > "$pkgdir/usr/share/applications/gitty.desktop" <<-EOF cat > "$pkgdir/usr/share/applications/gitty-desktop.desktop" <<-EOF
[Desktop Entry] [Desktop Entry]
Type=Application Type=Application
Name=Gitty Name=Gitty
Comment=$pkgdesc Comment=$pkgdesc
Exec=gitty Exec=gitty-desktop
Icon=gitty Icon=gitty-desktop
Terminal=false Terminal=false
Categories=Development;RevisionControl; Categories=Development;RevisionControl;
StartupWMClass=gitty StartupWMClass=gitty
EOF EOF
install -Dm644 "README.md" "$pkgdir/usr/share/doc/$pkgname/README.md" install -Dm644 README.md "$pkgdir/usr/share/doc/$pkgname/README.md"
} }
+12 -13
View File
@@ -54,23 +54,22 @@ MIT License
## Arch Linux ## Arch Linux
Release builds are published as an `x86_64` pacman repository. Add this block to Install Gitty from the AUR with an AUR helper:
`/etc/pacman.conf` once:
```ini
[gitty]
SigLevel = Optional TrustAll
Server = https://cdn.cbsk-tech.de/gitty/arch/$arch
```
Then install Gitty and receive future releases through the normal system update:
```bash ```bash
sudo pacman -Syu gitty yay -S gitty-desktop
``` ```
The repository is currently distributed over HTTPS but is not GPG-signed. A Or build the AUR package manually:
repository signing key should be added before recommending it to third parties.
```bash
git clone https://aur.archlinux.org/gitty-desktop.git
cd gitty-desktop
makepkg -si
```
The AUR recipe downloads the public Gitea release archive and builds Gitty from
source. The release pipeline updates its version, checksum, and `.SRCINFO`.
--- ---
-86
View File
@@ -1,86 +0,0 @@
import argparse
import os
from pathlib import Path
from minio import Minio
from minio.error import S3Error
from main import (
ConfigurationError,
_create_minio_client,
_ensure_bucket,
_parse_publish_targets,
)
REPO_PREFIX = "arch/x86_64"
DATABASE_NAME = "gitty.db.tar.gz"
def _targets():
bucket_name = (os.environ.get("S3_BUCKET") or "gitty").lower()
app_dir = (os.environ.get("APP_DIR") or "gitty").strip("/")
return _parse_publish_targets(bucket_name, app_dir)
def download_database(client: Minio, output: Path) -> None:
target = _targets()[0]
object_name = f"{REPO_PREFIX}/{DATABASE_NAME}"
output.parent.mkdir(parents=True, exist_ok=True)
try:
client.fget_object(target.bucket_name, object_name, str(output))
print(f"Downloaded s3://{target.bucket_name}/{object_name} -> {output}")
except S3Error as exc:
if exc.code in {"NoSuchKey", "NoSuchObject"}:
print("No existing Arch repository database found; creating a new one.")
return
raise
def publish_repository(client: Minio, packages_dir: Path, repo_dir: Path) -> None:
packages = sorted(packages_dir.glob("*.pkg.tar.zst"))
if not packages:
raise FileNotFoundError(f"No .pkg.tar.zst package found in {packages_dir}")
repository_files = [
path
for path in repo_dir.iterdir()
if path.is_file() and path.name.startswith("gitty.")
]
if not any(path.name == DATABASE_NAME for path in repository_files):
raise FileNotFoundError(f"Missing repository database: {repo_dir / DATABASE_NAME}")
for target in _targets():
_ensure_bucket(client, target.bucket_name)
for path in [*packages, *repository_files]:
object_name = f"{REPO_PREFIX}/{path.name}"
client.fput_object(target.bucket_name, object_name, str(path))
print(f"Uploaded {path.name} -> s3://{target.bucket_name}/{object_name}")
def main() -> None:
parser = argparse.ArgumentParser(description="Manage the Gitty pacman repository on MinIO.")
subparsers = parser.add_subparsers(dest="command", required=True)
download_parser = subparsers.add_parser("download-db")
download_parser.add_argument("--output", type=Path, required=True)
publish_parser = subparsers.add_parser("publish")
publish_parser.add_argument("--packages-dir", type=Path, required=True)
publish_parser.add_argument("--repo-dir", type=Path, required=True)
args = parser.parse_args()
client = _create_minio_client()
if args.command == "download-db":
download_database(client, args.output)
else:
publish_repository(client, args.packages_dir, args.repo_dir)
if __name__ == "__main__":
try:
main()
except (ConfigurationError, FileNotFoundError, S3Error) as exc:
raise SystemExit(f"Arch repository operation failed: {exc}") from exc
+20 -20
View File
@@ -647,20 +647,20 @@
{ {
id: "app-package-updates", id: "app-package-updates",
title: "Gitty unter Arch Linux installieren und aktualisieren", title: "Gitty unter Arch Linux installieren und aktualisieren",
summary: "Ein Pacman-Repository auf der CDN-Seite ermöglicht signierte, versionierte Updates. Alternativ lässt sich eine heruntergeladene .pkg.tar.zst-Datei direkt installieren.", summary: "Das AUR-Paket gitty-desktop lädt das öffentliche Gitea-Release und baut Gitty lokal aus dem Quellcode.",
commands: [ commands: [
{ command: "sudo pacman --config /pfad/gitty-pacman.conf -Syu gitty", description: "Repository-Konfiguration für genau diesen Aufruf verwenden und Gitty aktualisieren" }, { command: "yay -S gitty-desktop", description: "Gitty mit yay aus dem AUR bauen, installieren oder aktualisieren" },
{ command: "sudo pacman -U /pfad/gitty-<version>-x86_64.pkg.tar.zst", description: "Ein einzelnes lokales oder heruntergeladenes Paket installieren" }, { command: "paru -S gitty-desktop", description: "Gitty alternativ mit paru bauen, installieren oder aktualisieren" },
{ command: "pacman -Qi gitty", description: "Installierte Version und Paketinformationen anzeigen" }, { command: "git clone https://aur.archlinux.org/gitty-desktop.git && cd gitty-desktop && makepkg -si", description: "AUR-Paket ohne AUR-Helfer prüfen und manuell bauen" },
{ command: "pacman -Si gitty", description: "Im konfigurierten Repository verfügbare Version anzeigen" }, { command: "pacman -Qi gitty-desktop", description: "Installierte Version und Paketinformationen anzeigen" },
], ],
steps: [ steps: [
"Für normale Systemupdates trägst du das Gitty-Repository einmal dauerhaft in /etc/pacman.conf ein.", "Das PKGBUILD lädt das öffentliche Quellarchiv des jeweiligen Gitea-Tags herunter.",
"Wenn du die Systemdatei nicht ändern möchtest, gib --config bei jedem Pacman-Aufruf erneut an oder verwende ein eigenes Wrapper-Skript.", "Die Pipeline aktualisiert Version, Prüfsumme und .SRCINFO im AUR-Paket gitty-desktop.",
"Die Build-Pipeline erzeugt das Paket aus dem PKGBUILD, aktualisiert die Repository-Datenbank und veröffentlicht beides auf dem CDN.", "AUR-Helfer erkennen neue Versionen und erzeugen daraus lokal ein normales Pacman-Paket.",
"Pacman installiert nur dann eine neue Version, wenn Paketversion und Repository-Datenbank entsprechend aktualisiert wurden.", "Ohne AUR-Helfer kannst du das AUR-Git-Repository klonen, die Dateien prüfen und makepkg -si ausführen.",
], ],
note: "--config gilt nur für den aktuellen Pacman-Prozess. Ein späteres sudo pacman -Syu erinnert sich nicht automatisch an den zuvor angegebenen Pfad.", note: "AUR-Pakete werden von Nutzern gepflegt. Prüfe PKGBUILD und .SRCINFO vor der Installation, besonders nach größeren Änderungen.",
}, },
); );
@@ -1090,20 +1090,20 @@
{ {
id: "app-package-updates", id: "app-package-updates",
title: "Install and update Gitty on Arch Linux", title: "Install and update Gitty on Arch Linux",
summary: "A Pacman repository hosted on the CDN provides versioned updates. Alternatively, install a downloaded .pkg.tar.zst package directly.", summary: "The gitty-desktop AUR package downloads the public Gitea release and builds Gitty locally from source.",
commands: [ commands: [
{ command: "sudo pacman --config /path/gitty-pacman.conf -Syu gitty", description: "Use the custom repository configuration for this invocation and update Gitty" }, { command: "yay -S gitty-desktop", description: "Build, install, or update Gitty from the AUR with yay" },
{ command: "sudo pacman -U /path/gitty-<version>-x86_64.pkg.tar.zst", description: "Install one local or downloaded package file" }, { command: "paru -S gitty-desktop", description: "Alternatively build, install, or update Gitty with paru" },
{ command: "pacman -Qi gitty", description: "Show the installed version and package information" }, { command: "git clone https://aur.archlinux.org/gitty-desktop.git && cd gitty-desktop && makepkg -si", description: "Inspect and build the AUR package without an AUR helper" },
{ command: "pacman -Si gitty", description: "Show the version available from configured repositories" }, { command: "pacman -Qi gitty-desktop", description: "Show the installed version and package information" },
], ],
steps: [ steps: [
"For regular system upgrades, add the Gitty repository to /etc/pacman.conf once.", "PKGBUILD downloads the public source archive for the corresponding Gitea tag.",
"If you do not want to change the system file, pass --config on every Pacman invocation or create a dedicated wrapper script.", "The pipeline updates the version, checksum, and .SRCINFO in the gitty-desktop AUR package.",
"The build pipeline creates the package from PKGBUILD, updates the repository database, and publishes both to the CDN.", "AUR helpers detect new versions and turn the recipe into a regular Pacman package locally.",
"Pacman offers an update only after both the package version and repository database have been updated.", "Without an AUR helper, clone the AUR Git repository, inspect its files, and run makepkg -si.",
], ],
note: "--config applies only to the current Pacman process. A later sudo pacman -Syu does not remember a previously supplied configuration path.", note: "AUR packages are user-maintained. Review PKGBUILD and .SRCINFO before installing, especially after major changes.",
}, },
); );