summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore6
-rw-r--r--PKGBUILD50
-rw-r--r--config.yaml14
-rw-r--r--confplanner.service32
-rw-r--r--confplanner.sysusers1
5 files changed, 103 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..9078d0d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+*
+!.gitignore
+!PKGBUILD
+!confplanner.service
+!confplanner.sysusers
+!config.yaml
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 0000000..623e2dc
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,50 @@
+# Maintainer: Leonardo Bishop <me@leonardobishop.net>
+_pkgname=confplanner
+pkgname="${_pkgname}-git"
+pkgdesc="Web application to manage conference schedules"
+pkgver=20250823.r10.g215aa87
+pkgrel=1
+makedepends=('go' 'make' 'git' 'nodejs')
+arch=('x86_64')
+url="https://git.leonardobishop.net/confplanner/about/"
+license=('AGPL-3.0-or-later')
+conflicts=("${_pkgname}")
+provides=("${_pkgname}=${pkgver}")
+source=(confplanner::git+https://git.leonardobishop.net/confplanner/
+ confplanner.service
+ confplanner.sysusers
+ config.yaml
+ )
+sha256sums=('SKIP'
+ 'ce4047f2f9fe48ac00038134f3e7d6e34281fd28599a4de92fdd3d67996ba6db'
+ 'b1f6a19fb6d4691f437bce1f647e2f744c6869e222536bec4ccbf966b2c7c9b5'
+ '62b7bda12b8a6f602c1084e29c62137d5a8156a46a6a76215a76034a0e5a8c78')
+backup=(etc/confplanner/config.yaml)
+
+pkgver() {
+ cd "confplanner"
+ printf "%s.r%s.g%s" "$(git log -1 --format=%cd --date=format:'%Y%m%d')" "$(git rev-list --count HEAD)" "$(git rev-parse --short=7 HEAD)"
+}
+
+prepare() {
+ export GOPATH="$srcdir/build"
+
+ cd "confplanner"
+ go mod download
+}
+
+build() {
+ export GOPATH="$srcdir/build"
+ export PATH="$PATH:$srcdir/build/bin"
+
+ cd "confplanner"
+ make
+}
+
+package() {
+ install -Dm755 "$srcdir/confplanner/confplanner" "$pkgdir/usr/bin/confplanner"
+ install -Dm644 "$srcdir/confplanner.service" "$pkgdir/usr/lib/systemd/system/confplanner.service"
+ install -Dm644 "$srcdir/confplanner.sysusers" "$pkgdir/usr/lib/sysusers.d/confplanner.conf"
+ install -Dm755 -d "${pkgdir}/etc/confplanner"
+ install -Dm644 "$srcdir/config.yaml" "$pkgdir/etc/confplanner/config.yaml"
+}
diff --git a/config.yaml b/config.yaml
new file mode 100644
index 0000000..35b5f95
--- /dev/null
+++ b/config.yaml
@@ -0,0 +1,14 @@
+server:
+ host: 0.0.0.0
+ port: 4000
+
+database:
+ connString: "host=localhost port=5432 user= dbname= sslmode="
+ autoMigrate: true
+
+conference:
+ scheduleURL: ""
+
+acceptRegistrations: true
+baseURL: ""
+
diff --git a/confplanner.service b/confplanner.service
new file mode 100644
index 0000000..46a7872
--- /dev/null
+++ b/confplanner.service
@@ -0,0 +1,32 @@
+[Unit]
+Description=Web application to manage conference schedules
+
+[Service]
+User=confplanner
+Restart=always
+ExecStart=/usr/bin/confplanner
+StateDirectory=confplanner
+WorkingDirectory=/etc/confplanner
+
+CapabilityBoundingSet=CAP_NET_BIND_SERVICE
+AmbientCapabilities=CAP_NET_BIND_SERVICE
+NoNewPrivileges=true
+SystemCallFilter=@system-service
+SystemCallErrorNumber=EPERM
+
+ProtectSystem=strict
+ProtectHome=true
+PrivateTmp=true
+PrivateDevices=true
+ExecPaths=/usr/bin/confplanner
+
+ProtectKernelTunables=true
+ProtectKernelModules=true
+ProtectKernelLogs=true
+ProtectControlGroups=true
+ProtectClock=true
+RestrictRealtime=true
+RestrictSUIDSGID=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/confplanner.sysusers b/confplanner.sysusers
new file mode 100644
index 0000000..a5e9b8f
--- /dev/null
+++ b/confplanner.sysusers
@@ -0,0 +1 @@
+u confplanner - "Web application to manage conference schedules" /var/lib/confplanner