summary refs log tree commit diff
path: root/pkgs/tools/misc/brltty/default.nix
diff options
context:
space:
mode:
authorrnhmjoj <rnhmjoj@inventati.org>2021-03-01 08:57:03 +0100
committerrnhmjoj <rnhmjoj@inventati.org>2021-03-01 13:15:35 +0100
commit6d1d1fc6915de56a6324d0f2ff7c97cdaf2c5b2a (patch)
tree29b0242995e0a483b208afe0da01354d5bd93c21 /pkgs/tools/misc/brltty/default.nix
parentba27976cf1345c578664377ab479d1c9bf06c383 (diff)
downloadnixpkgs-6d1d1fc6915de56a6324d0f2ff7c97cdaf2c5b2a.tar
nixpkgs-6d1d1fc6915de56a6324d0f2ff7c97cdaf2c5b2a.tar.gz
nixpkgs-6d1d1fc6915de56a6324d0f2ff7c97cdaf2c5b2a.tar.bz2
nixpkgs-6d1d1fc6915de56a6324d0f2ff7c97cdaf2c5b2a.tar.lz
nixpkgs-6d1d1fc6915de56a6324d0f2ff7c97cdaf2c5b2a.tar.xz
nixpkgs-6d1d1fc6915de56a6324d0f2ff7c97cdaf2c5b2a.tar.zst
nixpkgs-6d1d1fc6915de56a6324d0f2ff7c97cdaf2c5b2a.zip
brltty: install systemd,udev,polkit files
Diffstat (limited to 'pkgs/tools/misc/brltty/default.nix')
-rw-r--r--pkgs/tools/misc/brltty/default.nix51
1 files changed, 47 insertions, 4 deletions
diff --git a/pkgs/tools/misc/brltty/default.nix b/pkgs/tools/misc/brltty/default.nix
index d39a0ef4102..90bcc0092d3 100644
--- a/pkgs/tools/misc/brltty/default.nix
+++ b/pkgs/tools/misc/brltty/default.nix
@@ -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
+    )
   '';
 }