diff --git a/pkgs/os-specific/darwin/karabiner-elements/default.nix b/pkgs/os-specific/darwin/karabiner-elements/default.nix new file mode 100644 index 00000000000..6444c7f0e0f --- /dev/null +++ b/pkgs/os-specific/darwin/karabiner-elements/default.nix @@ -0,0 +1,50 @@ +{ lib, stdenv, fetchurl, cpio, xar, undmg }: + +stdenv.mkDerivation rec { + pname = "karabiner-elements"; + version = "14.8.0"; + + src = fetchurl { + url = "https://github.com/pqrs-org/Karabiner-Elements/releases/download/v${version}/Karabiner-Elements-${version}.dmg"; + sha256 = "sha256-sQJgK3EoJf8wcr0iL9iZXl6NJArptUDTrDeNKwgEfuM="; + }; + + outputs = [ "out" "driver" ]; + + nativeBuildInputs = [ cpio xar undmg ]; + + unpackPhase = '' + undmg $src + xar -xf Karabiner-Elements.pkg + cd Installer.pkg + zcat Payload | cpio -i + cd ../Karabiner-DriverKit-VirtualHIDDevice.pkg + zcat Payload | cpio -i + cd .. + ''; + + sourceRoot = "."; + + postPatch = '' + for f in *.pkg/Library/Launch{Agents,Daemons}/*.plist; do + substituteInPlace $f \ + --replace "/Library/" "$out/Library/" + done + ''; + + installPhase = '' + mkdir -p $out $driver + cp -R Installer.pkg/Applications Installer.pkg/Library $out + cp -R Karabiner-DriverKit-VirtualHIDDevice.pkg/Applications Karabiner-DriverKit-VirtualHIDDevice.pkg/Library $driver + + cp "$out/Library/Application Support/org.pqrs/Karabiner-Elements/package-version" "$out/Library/Application Support/org.pqrs/Karabiner-Elements/version" + ''; + + meta = with lib; { + description = "Karabiner-Elements is a powerful utility for keyboard customization on macOS Sierra (10.12) or later."; + homepage = "https://karabiner-elements.pqrs.org/"; + platforms = platforms.darwin; + maintainers = with maintainers; [ Enzime ]; + license = licenses.unlicense; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7cbf3ace0d0..739d6ea6e42 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -24062,6 +24062,8 @@ with pkgs; jujuutils = callPackage ../os-specific/linux/jujuutils { }; + karabiner-elements = callPackage ../os-specific/darwin/karabiner-elements { }; + kbd = callPackage ../os-specific/linux/kbd { }; kbdlight = callPackage ../os-specific/linux/kbdlight { };