mirror of
https://github.com/NixOS/nixos-hardware
synced 2024-11-27 05:19:43 +01:00
commit
76ff88e0d2
5 changed files with 136 additions and 0 deletions
|
@ -137,6 +137,7 @@ See code for all available configurations.
|
||||||
| [Lenovo ThinkPad X1 (7th Gen)][] | `<nixos-hardware/lenovo/thinkpad/x1/7th-gen>` |
|
| [Lenovo ThinkPad X1 (7th Gen)][] | `<nixos-hardware/lenovo/thinkpad/x1/7th-gen>` |
|
||||||
| Lenovo ThinkPad X1 Extreme Gen 2 | `<nixos-hardware/lenovo/thinkpad/x1-extreme/gen2>` |
|
| Lenovo ThinkPad X1 Extreme Gen 2 | `<nixos-hardware/lenovo/thinkpad/x1-extreme/gen2>` |
|
||||||
| [Lenovo ThinkPad X13][] | `<nixos-hardware/lenovo/thinkpad/x13` |
|
| [Lenovo ThinkPad X13][] | `<nixos-hardware/lenovo/thinkpad/x13` |
|
||||||
|
| [One-Netbook OneNetbook 4][] | `<nixos-hardware/onenetbook/4` |
|
||||||
| [Microsoft Surface Range][] | `<nixos-hardware/microsoft/surface>` |
|
| [Microsoft Surface Range][] | `<nixos-hardware/microsoft/surface>` |
|
||||||
| [Microsoft Surface Pro 3][] | `<nixos-hardware/microsoft/surface-pro/3>` |
|
| [Microsoft Surface Pro 3][] | `<nixos-hardware/microsoft/surface-pro/3>` |
|
||||||
| [MSI GS60 2QE][] | `<nixos-hardware/msi/gs60>` |
|
| [MSI GS60 2QE][] | `<nixos-hardware/msi/gs60>` |
|
||||||
|
@ -181,6 +182,7 @@ See code for all available configurations.
|
||||||
[Lenovo ThinkPad X260]: lenovo/thinkpad/x260
|
[Lenovo ThinkPad X260]: lenovo/thinkpad/x260
|
||||||
[Microsoft Surface Pro 3]: microsoft/surface-pro/3
|
[Microsoft Surface Pro 3]: microsoft/surface-pro/3
|
||||||
[MSI GS60 2QE]: msi/gs60
|
[MSI GS60 2QE]: msi/gs60
|
||||||
|
[One-Netbook OneNetbook 4]: onenetbook/4
|
||||||
[Raspberry Pi 2]: raspberry-pi/2
|
[Raspberry Pi 2]: raspberry-pi/2
|
||||||
[Samsung Series 9 NP900X3C]: samsung/np900x3c
|
[Samsung Series 9 NP900X3C]: samsung/np900x3c
|
||||||
[System76 (generic)]: system76
|
[System76 (generic)]: system76
|
||||||
|
|
52
onenetbook/4/default.nix
Normal file
52
onenetbook/4/default.nix
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
{ pkgs, config, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
iio-sensor-proxy-supports-rotation =
|
||||||
|
lib.versionAtLeast pkgs.iio-sensor-proxy.version "3.0";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
../../common/cpu/intel
|
||||||
|
../../common/pc/laptop
|
||||||
|
../../common/pc/laptop/ssd
|
||||||
|
];
|
||||||
|
|
||||||
|
# OneNetbook 4 has `GXTP7386:00 27C6:011A Stylus` exporting no buttons in 5.12
|
||||||
|
# and libinput does't consider it a tablet without them, but a touchscreen.
|
||||||
|
# This leads to real weird effects,
|
||||||
|
# starting from clicking as soon as the pen gets tracked.
|
||||||
|
# A kernel patch exists to resolve that, compiled as an out-of-tree module here
|
||||||
|
# to avoid recompiling the kernel for such a small change.
|
||||||
|
# `hid-multitouch-onenetbook4` is the fixed one, don't use `hid-multitouch`.
|
||||||
|
boot.blacklistedKernelModules = [ "hid-multitouch" ];
|
||||||
|
boot.extraModulePackages = [
|
||||||
|
(config.boot.kernelPackages.callPackage ./goodix-stylus-mastykin {})
|
||||||
|
];
|
||||||
|
|
||||||
|
# OneNetbook 4 has an accelerometer,
|
||||||
|
hardware.sensor.iio.enable = lib.mkDefault iio-sensor-proxy-supports-rotation;
|
||||||
|
# said accelerometer needs rotation, rotation needs iio-sensor-proxy >= 3.0
|
||||||
|
services.udev.extraHwdb = lib.mkIf iio-sensor-proxy-supports-rotation ''
|
||||||
|
acpi:BOSC0200:BOSC0200:*
|
||||||
|
ACCEL_MOUNT_MATRIX=0, 1, 0; 0, 0, 1; 1, 0, 0
|
||||||
|
'';
|
||||||
|
# (this at least gets normal/left-up/right-up/bottom-up right)
|
||||||
|
# Until https://github.com/NixOS/nixpkgs/pull/125989 reaches you, you can use
|
||||||
|
#nixpkgs.overlays = [
|
||||||
|
# (self: super: {
|
||||||
|
# iio-sensor-proxy =
|
||||||
|
# if (lib.versionOlder super.iio-sensor-proxy.version "3.0") then
|
||||||
|
# (super.iio-sensor-proxy.overrideAttrs (oa: rec {
|
||||||
|
# version = "3.0";
|
||||||
|
# src = pkgs.fetchFromGitLab {
|
||||||
|
# domain = "gitlab.freedesktop.org";
|
||||||
|
# owner = "hadess";
|
||||||
|
# repo = "iio-sensor-proxy";
|
||||||
|
# rev = version;
|
||||||
|
# sha256 = "0ngbz1vkbjci3ml6p47jh6c6caipvbkm8mxrc8ayr6vc2p9l1g49";
|
||||||
|
# };
|
||||||
|
# }))
|
||||||
|
# else super.iio-sensor-proxy;
|
||||||
|
# })
|
||||||
|
#];
|
||||||
|
}
|
17
onenetbook/4/goodix-stylus-mastykin/5.12.12.patch.patch
Normal file
17
onenetbook/4/goodix-stylus-mastykin/5.12.12.patch.patch
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
--- orig/patch1
|
||||||
|
+++ updated/patch1
|
||||||
|
@@ -10,11 +10,11 @@
|
||||||
|
/* quirks to control the device */
|
||||||
|
#define MT_QUIRK_NOT_SEEN_MEANS_UP BIT(0)
|
||||||
|
#define MT_QUIRK_SLOT_IS_CONTACTID BIT(1)
|
||||||
|
-@@ -70,6 +73,7 @@
|
||||||
|
- #define MT_QUIRK_WIN8_PTP_BUTTONS BIT(18)
|
||||||
|
+@@ -71,6 +74,7 @@
|
||||||
|
#define MT_QUIRK_SEPARATE_APP_REPORT BIT(19)
|
||||||
|
#define MT_QUIRK_FORCE_MULTI_INPUT BIT(20)
|
||||||
|
-+#define MT_QUIRK_NON_MT_PEN BIT(21)
|
||||||
|
+ #define MT_QUIRK_DISABLE_WAKEUP BIT(21)
|
||||||
|
++#define MT_QUIRK_NON_MT_PEN BIT(22)
|
||||||
|
|
||||||
|
#define MT_INPUTMODE_TOUCHSCREEN 0x02
|
||||||
|
#define MT_INPUTMODE_TOUCHPAD 0x03
|
7
onenetbook/4/goodix-stylus-mastykin/Makefile
Normal file
7
onenetbook/4/goodix-stylus-mastykin/Makefile
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
obj-m += hid-multitouch-onenetbook4.o
|
||||||
|
|
||||||
|
all:
|
||||||
|
make -C $(KERNEL_DIR) M=$(PWD) modules
|
||||||
|
|
||||||
|
install:
|
||||||
|
make -C $(KERNEL_DIR) M=$(PWD) modules_install
|
58
onenetbook/4/goodix-stylus-mastykin/default.nix
Normal file
58
onenetbook/4/goodix-stylus-mastykin/default.nix
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
{ stdenv, lib, kernel, fetchpatch, runCommandNoCC, patch }:
|
||||||
|
|
||||||
|
let
|
||||||
|
patch1_original = fetchpatch {
|
||||||
|
url = "https://marc.info/?l=linux-input&m=161847127221531&q=p3";
|
||||||
|
name = "goodix-stylus-mastykin-1-pen-support.patch";
|
||||||
|
sha256 = "sha256-1oc8OvfhScYvtsMeV9A4hU+09i59tEJ6HZS6jspsJR8=";
|
||||||
|
};
|
||||||
|
patch1_updated_5_12_12 = runCommandNoCC
|
||||||
|
"goodix-stylus-mastykin-1-pen-support-5.12.12.patch" {}
|
||||||
|
''
|
||||||
|
cat ${patch1_original} > $out
|
||||||
|
${patch}/bin/patch $out < ${./5.12.12.patch.patch}
|
||||||
|
'';
|
||||||
|
patch1 = if (lib.versionAtLeast kernel.version "5.12.12") then
|
||||||
|
patch1_updated_5_12_12 else patch1_original;
|
||||||
|
patch2 = fetchpatch {
|
||||||
|
url = "https://marc.info/?l=linux-input&m=161847127221531&q=p4";
|
||||||
|
name = "goodix-stylus-mastykin-2-buttons.patch";
|
||||||
|
sha256 = "sha256-HxmR8iEgoj4PJopGWJdWsjFxbfISwTMzz+HyG81mRG4=";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "hid-multitouch-onenetbook4-${version}";
|
||||||
|
version = kernel.version;
|
||||||
|
|
||||||
|
hardeningDisable = [ "pic" "format" ];
|
||||||
|
nativeBuildInputs = kernel.moduleBuildDependencies;
|
||||||
|
|
||||||
|
src = ./.;
|
||||||
|
patches = [ patch1 patch2 ];
|
||||||
|
|
||||||
|
postUnpack = ''
|
||||||
|
tar -C goodix-stylus-mastykin \
|
||||||
|
--strip-components=3 -xf ${kernel.src} --wildcards \
|
||||||
|
'*/drivers/hid/hid-ids.h' '*/drivers/hid/hid-multitouch.c'
|
||||||
|
'';
|
||||||
|
patchFlags = "-p3";
|
||||||
|
postPatch = ''
|
||||||
|
mv hid-multitouch.c hid-multitouch-onenetbook4.c
|
||||||
|
substituteInPlace hid-multitouch-onenetbook4.c --replace \
|
||||||
|
'.name = "hid-multitouch",' \
|
||||||
|
'.name = "hid-multitouch-onenetbook4",'
|
||||||
|
substituteInPlace hid-multitouch-onenetbook4.c --replace \
|
||||||
|
I2C_DEVICE_ID_GOODIX_0113 \
|
||||||
|
0x011A
|
||||||
|
'';
|
||||||
|
|
||||||
|
makeFlags = [
|
||||||
|
"KERNEL_DIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
|
||||||
|
"INSTALL_MOD_PATH=$(out)"
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
description = "hid-multitouch module patched for OneNetbook 4";
|
||||||
|
platforms = platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue