diff options
author | Arthur Skowronek | 2021-04-18 12:44:13 +0200 |
---|---|---|
committer | Arthur Skowronek | 2021-04-18 14:05:54 +0200 |
commit | 1cf823e8ba3dec49d5226f0537d839ae24c2fbe3 (patch) | |
tree | 183705e364cb3e32561cdbdda61fe729c339c2c1 | |
parent | 17b55189a6b0a17fdfb5e6d95346787cd2dca28c (diff) | |
download | aur-1cf823e8ba3dec49d5226f0537d839ae24c2fbe3.tar.gz |
add systemd service files
-rw-r--r-- | PKGBUILD | 44 | ||||
-rw-r--r-- | display-switch.ini | 1 | ||||
-rw-r--r-- | display_switch.service | 44 | ||||
-rw-r--r-- | sysusers.conf | 1 | ||||
-rw-r--r-- | udev.rules | 2 |
5 files changed, 82 insertions, 10 deletions
@@ -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}" |