nixos-hardware/onenetbook/4/default.nix
2021-06-26 12:09:54 +02:00

53 lines
1.9 KiB
Nix

{ 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;
# })
#];
}