All checks were successful
Build and publish packages / build-and-publish (push) Successful in 12s
The moonarch.install hook used to ensure /etc/paru.conf had Mode = arp and a [moonarch-pkgbuilds] section. Both exist to let paru resolve moonarch packages from a PKGBUILD repo — a second mechanism parallel to the Arch registry, redundant now that the registry DB is stable. Hook now strips the legacy config on next upgrade. Bump pkgrel so every installed system picks up the cleanup.
212 lines
7.0 KiB
Bash
212 lines
7.0 KiB
Bash
# ABOUTME: PKGBUILD for Moonarch — desktop environment defaults for Niri + Catppuccin Mocha.
|
|
# ABOUTME: Deploys XDG configs, helper scripts, zsh defaults, wallpaper and moonarch-update.
|
|
|
|
# Maintainer: Dominik Kressler
|
|
|
|
pkgname=moonarch-git
|
|
pkgver=r105.f4f6ede
|
|
pkgrel=9
|
|
pkgdesc="Moonarch desktop environment defaults — Niri, Waybar, Catppuccin Mocha"
|
|
arch=('any')
|
|
url="https://gitea.moonarch.de/nevaforget/moonarch"
|
|
license=('MIT')
|
|
install=moonarch.install
|
|
|
|
depends=(
|
|
# Compositor & session
|
|
'niri'
|
|
'greetd'
|
|
|
|
# Bar & notifications
|
|
'waybar'
|
|
'swaync'
|
|
|
|
# Terminal
|
|
'foot'
|
|
|
|
# Clipboard
|
|
'cliphist'
|
|
'wl-clipboard'
|
|
|
|
# Display
|
|
'kanshi'
|
|
|
|
# Audio
|
|
'pipewire'
|
|
'wireplumber'
|
|
'pipewire-pulse'
|
|
'alsa-utils'
|
|
'pavucontrol'
|
|
|
|
# Theming
|
|
'ttf-ubuntusans-nerd'
|
|
|
|
# System utilities referenced by helper scripts
|
|
'brightnessctl'
|
|
'jq'
|
|
'libnotify'
|
|
'upower'
|
|
'polkit-gnome'
|
|
'bluez-utils'
|
|
|
|
# Shell
|
|
'zsh'
|
|
|
|
# PipeWire extras for XDG config
|
|
'pipewire-alsa'
|
|
'pipewire-jack'
|
|
'gst-plugin-pipewire'
|
|
)
|
|
|
|
optdepends=(
|
|
# Moonarch ecosystem (install via paru from AUR/local builds)
|
|
'moongreet-git: greetd greeter'
|
|
'moonlock-git: Wayland lockscreen'
|
|
'moonset-git: session power menu'
|
|
|
|
# AUR packages (install via paru)
|
|
'walker-bin: application launcher'
|
|
'elephant-bin: walker search daemon'
|
|
'awww: wallpaper daemon (swww alternative)'
|
|
'waypaper: wallpaper GUI'
|
|
'stasis: idle manager'
|
|
'colloid-catppuccin-gtk-theme-git: Catppuccin GTK theme'
|
|
'sweet-cursors-git: cursor theme'
|
|
|
|
# General tools
|
|
'docker: container runtime'
|
|
'docker-compose: multi-container orchestration'
|
|
'neovim: editor (EDITOR in zshrc)'
|
|
'rustup: Rust toolchain'
|
|
'git: version control'
|
|
'lazygit: terminal UI for git'
|
|
'btop: system monitor'
|
|
'fastfetch: system info display'
|
|
'auto-cpufreq: CPU frequency scaling'
|
|
'ufw: firewall'
|
|
'timeshift: system snapshots'
|
|
'fwupd: firmware updates'
|
|
'waterfox-bin: web browser'
|
|
'blueberry: bluetooth manager GUI'
|
|
'nwg-look: GTK settings editor'
|
|
'wdisplays-persistent-gettext: display configuration GUI'
|
|
'wl-color-picker: color picker'
|
|
'waybar-niri-windows-bin: niri window titles for waybar'
|
|
'waybar-niri-workspaces-enhanced-git: niri workspaces for waybar'
|
|
'xwayland-satellite: X11 app support'
|
|
'colloid-catppuccin-theme-git: full Catppuccin GTK+icon theme'
|
|
)
|
|
|
|
makedepends=('git')
|
|
provides=('moonarch')
|
|
conflicts=('moonarch')
|
|
source=("git+${url}.git")
|
|
sha256sums=('SKIP')
|
|
|
|
pkgver() {
|
|
cd "$srcdir/moonarch"
|
|
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
|
|
}
|
|
|
|
package() {
|
|
cd "$srcdir/moonarch"
|
|
|
|
# --- XDG configs -> /etc/xdg/ ---
|
|
# walker/config.toml is excluded (owned by walker package).
|
|
# Our override is installed to /usr/share/moonarch/ and deployed
|
|
# to /etc/skel/ + existing user homes via the .install hook.
|
|
local _xdg_src="defaults/xdg"
|
|
while IFS= read -r -d '' file; do
|
|
local _rel="${file#"$_xdg_src/"}"
|
|
[[ "$_rel" == "walker/config.toml" ]] && continue
|
|
[[ "$_rel" == "foot/foot.ini" ]] && continue
|
|
[[ "$_rel" == "waybar/style.css" ]] && continue
|
|
[[ "$_rel" == "swaync/config.json" ]] && continue
|
|
[[ "$_rel" == "swaync/style.css" ]] && continue
|
|
if [[ "$file" == *.sh ]]; then
|
|
install -Dm755 "$file" "$pkgdir/etc/xdg/$_rel"
|
|
else
|
|
install -Dm644 "$file" "$pkgdir/etc/xdg/$_rel"
|
|
fi
|
|
done < <(find "$_xdg_src" -type f -print0)
|
|
|
|
# GTK4 theme symlinks (override settings.ini already installed above)
|
|
ln -sf /usr/share/themes/Colloid-Grey-Dark-Catppuccin/gtk-4.0/gtk-dark.css \
|
|
"$pkgdir/etc/xdg/gtk-4.0/gtk.css"
|
|
ln -sf /usr/share/themes/Colloid-Grey-Dark-Catppuccin/gtk-4.0/gtk-dark.css \
|
|
"$pkgdir/etc/xdg/gtk-4.0/gtk-dark.css"
|
|
ln -sf /usr/share/themes/Colloid-Grey-Dark-Catppuccin/gtk-4.0/assets \
|
|
"$pkgdir/etc/xdg/gtk-4.0/assets"
|
|
|
|
# --- Helper scripts -> /usr/bin/ ---
|
|
install -Dm755 defaults/bin/moonarch-* -t "$pkgdir/usr/bin/"
|
|
|
|
# moonarch-update + shorthand alias
|
|
install -Dm755 scripts/moonarch-update "$pkgdir/usr/bin/moonarch-update"
|
|
ln -s moonarch-update "$pkgdir/usr/bin/moonup"
|
|
|
|
# moonarch-doctor + shorthand alias
|
|
install -Dm755 scripts/moonarch-doctor "$pkgdir/usr/bin/moonarch-doctor"
|
|
ln -s moonarch-doctor "$pkgdir/usr/bin/moondoc"
|
|
|
|
# awww compatibility symlinks (waypaper calls swww)
|
|
ln -sf /usr/bin/awww "$pkgdir/usr/bin/swww"
|
|
ln -sf /usr/bin/awww-daemon "$pkgdir/usr/bin/swww-daemon"
|
|
|
|
# --- Zsh config ---
|
|
install -Dm644 defaults/shell/zshrc "$pkgdir/etc/zsh/zshrc.moonarch"
|
|
|
|
# --- Wallpaper ---
|
|
install -Dm644 defaults/backgrounds/wallpaper.jpg \
|
|
"$pkgdir/usr/share/moonarch/wallpaper.jpg"
|
|
|
|
# --- Package lists (data files for moonarch-update) ---
|
|
install -Dm644 packages/official.txt "$pkgdir/usr/share/moonarch/official.txt"
|
|
install -Dm644 packages/aur.txt "$pkgdir/usr/share/moonarch/aur.txt"
|
|
|
|
# --- Walker config override (deployed to user homes by .install) ---
|
|
install -Dm644 defaults/xdg/walker/config.toml \
|
|
"$pkgdir/usr/share/moonarch/walker-config.toml"
|
|
|
|
# --- Configs owned by other packages (deployed by .install, not owned here) ---
|
|
install -Dm644 defaults/xdg/foot/foot.ini \
|
|
"$pkgdir/usr/share/moonarch/foot/foot.ini"
|
|
install -Dm644 defaults/xdg/waybar/style.css \
|
|
"$pkgdir/usr/share/moonarch/waybar/style.css"
|
|
install -Dm644 defaults/xdg/swaync/config.json \
|
|
"$pkgdir/usr/share/moonarch/swaync/config.json"
|
|
install -Dm644 defaults/xdg/swaync/style.css \
|
|
"$pkgdir/usr/share/moonarch/swaync/style.css"
|
|
|
|
# --- Reference configs for greetd/moongreet (deployed by .install, not owned) ---
|
|
install -Dm644 defaults/etc/greetd/config.toml \
|
|
"$pkgdir/usr/share/moonarch/greetd/config.toml"
|
|
install -Dm644 defaults/etc/greetd/niri-greeter.kdl \
|
|
"$pkgdir/usr/share/moonarch/greetd/niri-greeter.kdl"
|
|
install -Dm644 defaults/etc/moongreet/moongreet.toml \
|
|
"$pkgdir/usr/share/moonarch/moongreet/moongreet.toml"
|
|
|
|
# --- Systemd user services -> /etc/systemd/user/ ---
|
|
install -Dm644 defaults/etc/systemd/user/*.service -t "$pkgdir/etc/systemd/user/"
|
|
|
|
# Enable services by creating the WantedBy symlinks directly
|
|
install -dm755 "$pkgdir/etc/systemd/user/graphical-session.target.wants"
|
|
for svc in defaults/etc/systemd/user/*.service; do
|
|
ln -sf "../$(basename "$svc")" \
|
|
"$pkgdir/etc/systemd/user/graphical-session.target.wants/$(basename "$svc")"
|
|
done
|
|
|
|
# --- udev rules -> /usr/lib/udev/rules.d/ ---
|
|
install -Dm644 defaults/etc/udev/rules.d/90-moonarch-battery.rules \
|
|
"$pkgdir/usr/lib/udev/rules.d/90-moonarch-battery.rules"
|
|
|
|
# --- Systemd system service (battery conservation restore) -> /usr/lib/systemd/system/ ---
|
|
install -Dm644 defaults/etc/systemd/system/moonarch-batsaver.service \
|
|
"$pkgdir/usr/lib/systemd/system/moonarch-batsaver.service"
|
|
|
|
}
|
|
|
|
backup=(
|
|
'etc/zsh/zshrc.moonarch'
|
|
)
|