mirror of
				https://github.com/NixOS/nixos-hardware.git
				synced 2025-11-04 09:17:14 +08:00 
			
		
		
		
	onenetbook/4: init, fix stylus
This commit is contained in:
		@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										21
									
								
								onenetbook/4/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								onenetbook/4/default.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
				
			|||||||
 | 
					{ pkgs, config, ... }:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  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 {})
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										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
 | 
				
			||||||
							
								
								
									
										49
									
								
								onenetbook/4/goodix-stylus-mastykin/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								onenetbook/4/goodix-stylus-mastykin/default.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
				
			|||||||
 | 
					{ stdenv, lib, kernel, fetchpatch }:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					stdenv.mkDerivation rec {
 | 
				
			||||||
 | 
					  name = "hid-multitouch-onenetbook4-${version}";
 | 
				
			||||||
 | 
					  version = kernel.version;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  hardeningDisable = [ "pic" "format" ];
 | 
				
			||||||
 | 
					  nativeBuildInputs = kernel.moduleBuildDependencies;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  src = ./.;
 | 
				
			||||||
 | 
					  patches = [
 | 
				
			||||||
 | 
					    (fetchpatch {
 | 
				
			||||||
 | 
					      url = "https://marc.info/?l=linux-input&m=161847127221531&q=p3";
 | 
				
			||||||
 | 
					      name = "goodix-stylus-mastykin-1-pen-support.patch";
 | 
				
			||||||
 | 
					      sha256 = "sha256-1oc8OvfhScYvtsMeV9A4hU+09i59tEJ6HZS6jspsJR8=";
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    (fetchpatch {
 | 
				
			||||||
 | 
					      url = "https://marc.info/?l=linux-input&m=161847127221531&q=p4";
 | 
				
			||||||
 | 
					      name = "goodix-stylus-mastykin-2-buttons.patch";
 | 
				
			||||||
 | 
					      sha256 = "sha256-HxmR8iEgoj4PJopGWJdWsjFxbfISwTMzz+HyG81mRG4=";
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					  ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  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;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user