brltty: install systemd,udev,polkit files

This commit is contained in:
rnhmjoj 2021-03-01 08:57:03 +01:00
parent ba27976cf1
commit 6d1d1fc691
No known key found for this signature in database
GPG key ID: BFBAF4C975F76450

View file

@ -1,4 +1,5 @@
{ lib, stdenv, fetchurl, pkg-config, python3, bluez
, tcl, acl, kmod, coreutils, shadow
, alsaSupport ? stdenv.isLinux, alsaLib ? null
, systemdSupport ? stdenv.isLinux, systemd ? null }:
@ -14,7 +15,7 @@ stdenv.mkDerivation rec {
sha256 = "14psxwlvgyi2fj1zh8rfykyjcjaya8xa7yg574bxd8y8n49n8hvb";
};
nativeBuildInputs = [ pkg-config python3.pkgs.cython ];
nativeBuildInputs = [ pkg-config python3.pkgs.cython tcl ];
buildInputs = [ bluez ]
++ lib.optional alsaSupport alsaLib
++ lib.optional systemdSupport systemd;
@ -33,11 +34,53 @@ stdenv.mkDerivation rec {
platforms = lib.platforms.all;
};
makeFlags = [ "PYTHON_PREFIX=$(out)" ];
preConfigurePhases = [ "preConfigure" ];
makeFlags = [
"PYTHON_PREFIX=$(out)"
"SYSTEMD_UNITS_DIRECTORY=$(out)/lib/systemd/system"
"SYSTEMD_USERS_DIRECTORY=$(out)/lib/sysusers.d"
"SYSTEMD_FILES_DIRECTORY=$(out)/lib/tmpfiles.d"
"UDEV_LIBRARY_DIRECTORY=$(out)/lib/udev"
"POLKIT_POLICY_DIR=$(out)/share/polkit-1/actions"
"POLKIT_RULE_DIR=$(out)/share/polkit-1/rules.d"
];
configureFlags = [
"--with-writable-directory=/run/brltty"
"--with-updatable-directory=/var/lib/brltty"
"--with-api-socket-path=/var/lib/BrlAPI"
];
installFlags = [ "install-systemd" "install-udev" "install-polkit" ];
preConfigure = ''
substituteInPlace configure --replace /sbin/ldconfig ldconfig
# Some script needs a working tclsh shebang
patchShebangs .
# Skip impure operations
substituteInPlace Programs/Makefile.in \
--replace install-writable-directory "" \
--replace install-apisoc-directory "" \
--replace install-api-key ""
'';
postInstall = ''
# Rewrite absolute paths
substituteInPlace $out/bin/brltty-mkuser \
--replace '/sbin/nologin' '${shadow}/bin/nologin'
(
cd $out/lib
substituteInPlace systemd/system/brltty@.service \
--replace '/usr/lib' "$out/lib" \
--replace '/sbin/modprobe' '${kmod}/bin/modprobe'
substituteInPlace systemd/system/brltty-device@.service \
--replace '/usr/bin/true' '${coreutils}/bin/true'
substituteInPlace udev/rules.d/90-brltty-uinput.rules \
--replace '/usr/bin/setfacl' '${acl}/bin/setfacl'
substituteInPlace tmpfiles.d/brltty.conf \
--replace "$out/etc" '/etc'
# Remove unused commands from udev rules
sed '/initctl/d' -i udev/rules.d/90-brltty-device.rules
)
'';
}