diff options
| author | Leonardo Bishop <me@leonardobishop.net> | 2025-08-23 23:06:11 +0100 |
|---|---|---|
| committer | Leonardo Bishop <me@leonardobishop.net> | 2025-08-23 23:06:11 +0100 |
| commit | 00dee186de706a5dc152862be74f050e26691a71 (patch) | |
| tree | 7fae0f3de9f5e2ffe54009f3d2e67910ab85831b | |
| -rw-r--r-- | .gitignore | 6 | ||||
| -rw-r--r-- | PKGBUILD | 50 | ||||
| -rw-r--r-- | config.yaml | 14 | ||||
| -rw-r--r-- | confplanner.service | 32 | ||||
| -rw-r--r-- | confplanner.sysusers | 1 |
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 |
