# 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=r67.fdedc80 pkgrel=1 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' '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 install -Dm755 scripts/moonarch-update "$pkgdir/usr/bin/moonarch-update" # 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" # --- User config templates (for post-install.sh / transform.sh) --- while IFS= read -r -d '' file; do local _rel="${file#defaults/user/}" install -Dm644 "$file" "$pkgdir/usr/share/moonarch/user-defaults/$_rel" done < <(find defaults/user -type f -print0) } backup=( 'etc/zsh/zshrc.moonarch' )