{ lib, stdenv, fetchurl, fetchpatch, autoreconfHook, pkg-config, help2man, python3, alsa-lib, xlibsWrapper, libxslt, systemd, libusb-compat-0_1, libftdi1 }: let pythonEnv = python3.pythonForBuild.withPackages (p: with p; [ pyyaml setuptools ]); in stdenv.mkDerivation rec { pname = "lirc"; version = "0.10.1"; src = fetchurl { url = "mirror://sourceforge/lirc/${pname}-${version}.tar.bz2"; sha256 = "1whlyifvvc7w04ahq07nnk1h18wc8j7c6wnvlb6mszravxh3qxcb"; }; patches = [ # Fix installation of Python bindings (fetchpatch { url = "https://sourceforge.net/p/lirc/tickets/339/attachment/0001-Fix-Python-bindings.patch"; sha256 = "088a39x8c1qd81qwvbiqd6crb2lk777wmrs8rdh1ga06lglyvbly"; }) # Add a workaround for linux-headers-5.18 until upstream adapts: # https://sourceforge.net/p/lirc/git/merge-requests/45/ ./linux-headers-5.18.patch ]; postPatch = '' patchShebangs . # fix overriding PYTHONPATH sed -i 's,^PYTHONPATH *= *,PYTHONPATH := $(PYTHONPATH):,' \ Makefile.in sed -i 's,PYTHONPATH=,PYTHONPATH=$(PYTHONPATH):,' \ doc/Makefile.in # Pull fix for new pyyaml pending upstream inclusion # https://sourceforge.net/p/lirc/git/merge-requests/39/ substituteInPlace python-pkg/lirc/database.py --replace 'yaml.load(' 'yaml.safe_load(' # cant import '/build/lirc-0.10.1/python-pkg/lirc/_client.so' while cross-compiling to check the version substituteInPlace python-pkg/setup.py \ --replace "VERSION='0.0.0'" "VERSION='${version}'" ''; preConfigure = '' # use empty inc file instead of a from linux kernel generated one touch lib/lirc/input_map.inc ''; strictDeps = true; nativeBuildInputs = [ autoreconfHook help2man libxslt pythonEnv ]; depsBuildBuild = [ pkg-config ]; buildInputs = [ alsa-lib xlibsWrapper systemd libusb-compat-0_1 libftdi1 ]; DEVINPUT_HEADER = "include/linux/input-event-codes.h"; configureFlags = [ "--sysconfdir=/etc" "--localstatedir=/var" "--with-systemdsystemunitdir=$(out)/lib/systemd/system" "--enable-uinput" # explicit activation because build env has no uinput "--enable-devinput" # explicit activation because build env has no /dev/input "--with-lockdir=/run/lirc/lock" # /run/lock is not writable for 'lirc' user "PYTHON=${pythonEnv.interpreter}" ]; installFlags = [ "sysconfdir=$out/etc" "localstatedir=$TMPDIR" ]; meta = with lib; { description = "Allows to receive and send infrared signals"; homepage = "https://www.lirc.org/"; license = licenses.gpl2; platforms = platforms.linux; maintainers = with maintainers; [ pSub ]; }; }