anchor.diff:  { lib, stdenv, fetchurl, pkg-config, python3, bluez
  +, tcl, acl, kmod, coreutils, shadow
   , alsaSupport ? stdenv.isLinux, alsaLib ? null
   , systemdSupport ? stdenv.isLinux, systemd ? null }:
   
  
positive.code:     sha256 = "14psxwlvgyi2fj1zh8rfykyjcjaya8xa7yg574bxd8y8n49n8hvb";
    };
  
    nativeBuildInputs = [ pkg-config python3.pkgs.cython ];
    buildInputs = [ bluez ]
      ++ lib.optional alsaSupport alsaLib
      ++ lib.optional systemdSupport systemd;
  
negative.code:     platforms = lib.platforms.all;
    };
  
    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
      )
    '';
  }
  