summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Skowronek2021-04-18 12:44:13 +0200
committerArthur Skowronek2021-04-18 14:05:54 +0200
commit1cf823e8ba3dec49d5226f0537d839ae24c2fbe3 (patch)
tree183705e364cb3e32561cdbdda61fe729c339c2c1
parent17b55189a6b0a17fdfb5e6d95346787cd2dca28c (diff)
downloadaur-1cf823e8ba3dec49d5226f0537d839ae24c2fbe3.tar.gz
add systemd service files
-rw-r--r--PKGBUILD44
-rw-r--r--display-switch.ini1
-rw-r--r--display_switch.service44
-rw-r--r--sysusers.conf1
-rw-r--r--udev.rules2
5 files changed, 82 insertions, 10 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 733e707b5657..423177c497df 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -2,7 +2,7 @@
_pkgname=display-switch
pkgname=$_pkgname-git
-pkgver=0.3.0.r8.6453919
+pkgver=0.3.0.r28.5f5ee6e
pkgrel=1
pkgdesc="Switching monitor inputs via DDC/CI based on USB device connect/disconnect events."
url="https://github.com/haimgel/display-switch"
@@ -12,27 +12,51 @@ conflicts=('display-switch')
license=('MIT')
depends=('libusb' 'systemd-libs')
makedepends=('cargo' 'git')
-source=("$_pkgname::git+https://github.com/haimgel/display-switch")
-sha512sums=('SKIP')
+backup=('etc/conf.d/display-switch/display-switch.ini')
+source=("$_pkgname::git+https://github.com/haimgel/display-switch"
+ 'display-switch.ini'
+ 'display_switch.service'
+ 'sysusers.conf'
+ 'udev.rules')
+sha256sums=('SKIP'
+ 'c05761988d4e2184f3c5c93e1a3ac581c82e718f8ccbc4c29d3a4ac0035b4cdb'
+ 'a6ef0a5215ad64db15bc1ec111d9b615a8634546c0f4df4289e25206d1e37c05'
+ 'd74e3706c7fc751c4e231589b75097412b82de4d8701c096ca22503a5599569a'
+ 'eba76d15a3295c60d020e9beb56f3c852665a2c23d1760cad04293413a359b61')
pkgver() {
- cd "$srcdir/$_pkgname"
+ cd "${srcdir}/${_pkgname}"
printf "%s" "$(git describe --long --tags | sed 's/\([^-]*-\)g/r\1/;s/-/./g')"
}
build() {
- cd "$srcdir/$_pkgname"
+ cd "${srcdir}/${_pkgname}"
cargo build --release --locked --all-features --target-dir=target
}
check() {
- cd "$srcdir/$_pkgname"
+ cd "${srcdir}/${_pkgname}"
cargo test --release --locked --target-dir=target
}
package() {
- cd "$srcdir/$_pkgname"
- install -Dt "$pkgdir/usr/bin" target/release/display_switch
- install -Dt "$pkgdir/usr/share/doc/$pkgname" -m644 README.md
- install -Dt "$pkgdir/usr/share/licenses/$pkgname" -m644 LICENSE
+ install -Dt "${pkgdir}/usr/bin" \
+ -m0755 "${_pkgname}/target/release/display_switch"
+ install -Dt "${pkgdir}/usr/share/doc/$pkgname" \
+ -m0644 "${_pkgname}/README.md"
+ install -Dt "${pkgdir}/usr/share/licenses/$pkgname" \
+ -m0644 "${_pkgname}/LICENSE"
+
+ install -Dt "${pkgdir}/etc/conf.d/display-switch" \
+ -m0644 "display-switch.ini"
+
+ # systemd integration
+ install -D -m0644 "${srcdir}/display_switch.service" \
+ "${pkgdir}/usr/lib/systemd/system/${_pkgname//-/_}.service"
+
+ install -D -m0644 "${srcdir}/udev.rules" \
+ "${pkgdir}/usr/lib/udev/rules.d/90-${_pkgname//-/_}.rules"
+
+ install -D -m0644 "${srcdir}/sysusers.conf" \
+ "${pkgdir}/usr/lib/sysusers.d/${_pkgname//-/_}.conf"
}
diff --git a/display-switch.ini b/display-switch.ini
new file mode 100644
index 000000000000..7f6befd6f15e
--- /dev/null
+++ b/display-switch.ini
@@ -0,0 +1 @@
+# See <https://github.com/haimgel/display-switch#configuration>.
diff --git a/display_switch.service b/display_switch.service
new file mode 100644
index 000000000000..fc2992346c39
--- /dev/null
+++ b/display_switch.service
@@ -0,0 +1,44 @@
+[Unit]
+Description=Monitor Input Switch
+
+Wants=modprobe@i2c_dev.service
+Requires=modprobe@i2c_dev.service
+
+[Service]
+Type=simple
+
+User=display_switch
+Group=display_switch
+
+DeviceAllow=char-i2c rw
+
+Environment="XDG_CONFIG_HOME=/etc/conf.d"
+Environment="XDG_DATA_HOME=/var/log/display-switch"
+
+ExecStart=/usr/bin/display_switch
+
+StandardOutput=journal
+LogsDirectory=display-switch
+StateDirectory=display-switch
+
+# sandboxing
+CapabilityBoundingSet=
+PrivateNetwork=true
+PrivateTmp=true
+PrivateUsers=true
+ProcSubset=pid
+ProtectClock=true
+ProtectHome=true
+ProtectHostname=true
+ProtectKernelLogs=true
+ProtectKernelModules=true
+ProtectKernelTunables=true
+ProtectProc=invisible
+ProtectSystem=strict
+NoNewPrivileges=true
+RemoveIPC=true
+RestrictSUIDSGID=true
+RestrictAddressFamilies=
+
+[Install]
+WantedBy=multi-user.target
diff --git a/sysusers.conf b/sysusers.conf
new file mode 100644
index 000000000000..b8a2b7183833
--- /dev/null
+++ b/sysusers.conf
@@ -0,0 +1 @@
+u display_switch - "display_switch service user" /var/lib/display_switch
diff --git a/udev.rules b/udev.rules
new file mode 100644
index 000000000000..2bd60700c189
--- /dev/null
+++ b/udev.rules
@@ -0,0 +1,2 @@
+# udev rule for allowing display_switch to access display data channels
+ACTION=="add", SUBSYSTEM=="i2c-dev", KERNEL=="i2c-[0-9]*", RUN+="/usr/bin/setfacl -m g:display_switch:rw $env{DEVNAME}"