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