79 lines
1.5 KiB
Nix
79 lines
1.5 KiB
Nix
|
{ stdenv
|
||
|
, lib
|
||
|
, fetchFromGitHub
|
||
|
, systemd
|
||
|
, runtimeShell
|
||
|
, python3
|
||
|
, nixosTests
|
||
|
}:
|
||
|
|
||
|
let
|
||
|
version = "2.5.0";
|
||
|
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "rvaiya";
|
||
|
repo = "keyd";
|
||
|
rev = "v" + version;
|
||
|
hash = "sha256-pylfQjTnXiSzKPRJh9Jli1hhin/MIGIkZxLKxqlReVo=";
|
||
|
};
|
||
|
|
||
|
pypkgs = python3.pkgs;
|
||
|
|
||
|
appMap = pypkgs.buildPythonApplication rec {
|
||
|
pname = "keyd-application-mapper";
|
||
|
inherit version src;
|
||
|
format = "other";
|
||
|
|
||
|
postPatch = ''
|
||
|
substituteInPlace scripts/${pname} \
|
||
|
--replace-fail /bin/sh ${runtimeShell}
|
||
|
'';
|
||
|
|
||
|
propagatedBuildInputs = with pypkgs; [ xlib ];
|
||
|
|
||
|
dontBuild = true;
|
||
|
|
||
|
installPhase = ''
|
||
|
install -Dm555 -t $out/bin scripts/${pname}
|
||
|
'';
|
||
|
|
||
|
meta.mainProgram = "keyd-application-mapper";
|
||
|
};
|
||
|
|
||
|
in
|
||
|
stdenv.mkDerivation {
|
||
|
pname = "keyd";
|
||
|
inherit version src;
|
||
|
|
||
|
postPatch = ''
|
||
|
substituteInPlace Makefile \
|
||
|
--replace-fail /usr/local ""
|
||
|
|
||
|
substituteInPlace keyd.service.in \
|
||
|
--replace-fail @PREFIX@ $out
|
||
|
'';
|
||
|
|
||
|
installFlags = [ "DESTDIR=${placeholder "out"}" ];
|
||
|
|
||
|
buildInputs = [ systemd ];
|
||
|
|
||
|
enableParallelBuilding = true;
|
||
|
|
||
|
# post-2.4.2 may need this to unbreak the test
|
||
|
# makeFlags = [ "SOCKET_PATH/run/keyd/keyd.socket" ];
|
||
|
|
||
|
postInstall = ''
|
||
|
ln -sf ${lib.getExe appMap} $out/bin/${appMap.pname}
|
||
|
rm -rf $out/etc
|
||
|
'';
|
||
|
|
||
|
passthru.tests.keyd = nixosTests.keyd;
|
||
|
|
||
|
meta = with lib; {
|
||
|
description = "Key remapping daemon for Linux";
|
||
|
license = licenses.mit;
|
||
|
maintainers = with maintainers; [ alfarel ];
|
||
|
platforms = platforms.linux;
|
||
|
};
|
||
|
}
|