summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 41b7edbab29f571ed469dddd6c61af564110714f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
pkgname=pbwrap
pkgver=0.1.0
pkgrel=1
pkgdesc="PocketBase instance manager"
arch=('x86_64' 'aarch64')
depends=('bash' 'curl' 'unzip' 'jq' 'rsync' 'systemd')
license=('GPL3')
install=pbwrap.install
source=("https://github.com/Arcodify/pbwrap/archive/refs/tags/v${pkgver}.tar.gz"
        "pbwrap.install")
sha256sums=('SKIP'
            'SKIP')

build() {
  : # no build step
}

package() {
  local srcdir_repo="$srcdir/${pkgname}-${pkgver}"

  install -d "$pkgdir/opt/pbwrap" "$pkgdir/etc/pbwrap/instances.d" "$pkgdir/opt/pb_apps" "$pkgdir/usr/bin" "$pkgdir/usr/lib/systemd/system"

  # Copy repo, exclude git metadata
  rsync -a --delete --exclude '.git' "$srcdir_repo/" "$pkgdir/opt/pbwrap/"

  # Ensure versions.json exists
  if [[ ! -f "$pkgdir/opt/pbwrap/config/versions.json" && -f "$pkgdir/opt/pbwrap/config/versions.default.json" ]]; then
    cp "$pkgdir/opt/pbwrap/config/versions.default.json" "$pkgdir/opt/pbwrap/config/versions.json"
  fi

  # Systemd unit (package-managed; pbwrap install-systemd still works for /etc/)
  cat >"$pkgdir/usr/lib/systemd/system/pocketbase@.service" <<'UNITEOF'
[Unit]
Description=PocketBase instance (%i)
After=network.target

[Service]
Type=simple
User=%i
Group=%i
WorkingDirectory=/opt/pb_apps/%i
EnvironmentFile=/etc/pbwrap/instances.d/%i.env
ExecStart=/opt/pb_apps/%i/pocketbase serve --http=${PB_BIND}:${PB_PORT} --dir=/opt/pb_apps/%i/pb_data
Restart=on-failure
RestartSec=2

NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/opt/pb_apps/%i

[Install]
WantedBy=multi-user.target
UNITEOF

  chmod 0644 "$pkgdir/usr/lib/systemd/system/pocketbase@.service"

  # Wrapper entrypoint to avoid symlink resolution issues
  cat >"$pkgdir/usr/bin/pbwrap" <<'WRAPPER'
#!/usr/bin/env bash
exec /opt/pbwrap/pbwrap.sh "$@"
WRAPPER
  chmod +x "$pkgdir/usr/bin/pbwrap"
}