Changes
diff --git a/packages/arch/PKGBUILD b/packages/arch/PKGBUILD
new file mode 100644
index 0000000..37a48f7
--- /dev/null
+++ b/packages/arch/PKGBUILD
@@ -0,0 +1,66 @@
+# Maintainer: MetroWind
+
+pkgname=card-collection-git
+pkgver=r67.gc905f92
+pkgrel=1
+pkgdesc='Server for card collection games'
+arch=('x86_64')
+url='https://git.xeno.darksair.org/card-collection.git'
+license=('WTFPL')
+depends=('curl' 'gcc-libs' 'glibc' 'openssl' 'sqlite' 'imagemagick')
+makedepends=('cmake' 'git')
+provides=('card-collection')
+conflicts=('card-collection')
+backup=('etc/card-collection.toml')
+
+source=(
+ 'card-collection::git+https://git.xeno.darksair.org/card-collection.git'
+ 'card-collection.service'
+ 'card-collection.sysusers'
+ 'card-collection.tmpfiles'
+ 'config.toml'
+)
+sha256sums=(
+ 'SKIP'
+ 'c76cb2bef8a68ba70b00df359181160b35aef491d6186f4e6a01bd8e12fd3ace'
+ '854a27c8fb3cc72d6cf541a654e4717339e8dab940b5b653df4c67e2908fd545'
+ '13f941070585e369e52ad4344bf2e5bb02f58fa37ec7f229694f649137ae57df'
+ '4b15c9d5e323ceb0ac2d3bd064a139933b546b3a9feb15b3ff98f413ea884718'
+)
+
+pkgver()
+{
+ cd "$srcdir/card-collection"
+ printf 'r%s.g%s' \
+ "$(git rev-list --count HEAD)" \
+ "$(git rev-parse --short=7 HEAD)"
+}
+
+build()
+{
+ cd "$srcdir"
+ cmake -S card-collection -B build \
+ -DCMAKE_BUILD_TYPE=None \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCARD-COLLECTION_BUILD_TESTS=OFF \
+ -Wno-dev
+ cmake --build build
+}
+
+package()
+{
+ cd "$srcdir"
+ install -Dm755 build/card-collection "$pkgdir/usr/bin/card-collection"
+
+ install -d "$pkgdir/usr/share/card-collection"
+ cp -a card-collection/templates "$pkgdir/var/lib/card-collection/"
+ cp -a card-collection/static "$pkgdir/var/lib/card-collection/"
+
+ install -Dm644 config.taml "$pkgdir/etc/card-collection.taml"
+ install -Dm644 card-collection.service \
+ "$pkgdir/usr/lib/systemd/system/card-collection.service"
+ install -Dm644 card-collection.sysusers \
+ "$pkgdir/usr/lib/sysusers.d/card-collection.conf"
+ install -Dm644 card-collection.tmpfiles \
+ "$pkgdir/usr/lib/tmpfiles.d/card-collection.conf"
+}
diff --git a/packages/arch/card-collection.service b/packages/arch/card-collection.service
new file mode 100644
index 0000000..24c4bfc
--- /dev/null
+++ b/packages/arch/card-collection.service
@@ -0,0 +1,22 @@
+[Unit]
+Description=Card collection server
+After=network-online.target
+Wants=network-online.target
+
+[Service]
+Type=simple
+User=card
+Group=card
+ExecStart=/usr/bin/card-collection /etc/card-collection.toml
+WorkingDirectory=/var/lib/card-collection
+Restart=on-failure
+RestartSec=5s
+NoNewPrivileges=true
+PrivateTmp=true
+ProtectSystem=strict
+ProtectHome=true
+ReadOnlyPaths=/etc/card-collection.toml
+ReadWritePaths=/var/lib/card-collection
+
+[Install]
+WantedBy=multi-user.target
diff --git a/packages/arch/card-collection.sysusers b/packages/arch/card-collection.sysusers
new file mode 100644
index 0000000..d74d6ed
--- /dev/null
+++ b/packages/arch/card-collection.sysusers
@@ -0,0 +1 @@
+u card - "Card collection game server" /var/lib/card-collection
diff --git a/packages/arch/card-collection.tmpfiles b/packages/arch/card-collection.tmpfiles
new file mode 100644
index 0000000..d4652d8
--- /dev/null
+++ b/packages/arch/card-collection.tmpfiles
@@ -0,0 +1 @@
+d /var/lib/card-collection 0750 card card -
diff --git a/packages/arch/config.toml b/packages/arch/config.toml
new file mode 100644
index 0000000..4ad17a8
--- /dev/null
+++ b/packages/arch/config.toml
@@ -0,0 +1,26 @@
+base_url = "http://localhost:8080/"
+listen_address = "localhost"
+listen_port = 8080
+static_root = "static"
+database_path = "/var/lib/card-collection/data.sqlite3"
+card_storage_root = "/var/lib/card-collection/cards"
+avif_quality = 80
+thumbnail_long_side = 256
+
+# Immutable after the first database initialization.
+administrator_email = "admin@example.com"
+
+# Lowering this value can permanently discard accrued availability.
+maximum_accumulated_pulls = 3
+
+[email]
+transport = "file"
+link_file = "/tmp/card-collection-authentication-link.txt"
+
+# Production Mailjet alternative (replace the file settings above):
+# transport = "mailjet"
+# from_address = "cards@example.com"
+# from_name = "Card Collection"
+# mailjet_api_key_environment = "CARD_COLLECTION_MAILJET_API_KEY"
+# mailjet_secret_key_environment = "CARD_COLLECTION_MAILJET_SECRET_KEY"
+# daily_attempt_limit = 180