{ config, pkgs, ... }: let hp-omen-linux-module = pkgs.callPackage ({ kernel ? config.boot.kernelPackages.kernel, stdenv, fetchFromGitHub }: stdenv.mkDerivation (finalAttrs: { pname = "hp-omen-linux-module"; version = "rebase-6.14"; src = fetchFromGitHub { owner = "ranisalt"; repo = "hp-omen-linux-module"; rev = finalAttrs.version; sha256 = "sha256-2zCm29bdboSjRm/caMjBPGNc0tZXPUnIIYlHxxfhAok="; }; setSourceRoot = '' export sourceRoot=$(pwd)/${finalAttrs.src.name}/src ''; nativeBuildInputs = kernel.moduleBuildDependencies; makeFlags = [ "KERNELDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build" ]; installPhase = '' runHook preInstall install hp-wmi.ko -Dm444 -t $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/platform/x86/hp/ runHook postInstall ''; })) { kernel = config.boot.kernelPackages.kernel; }; in { boot.extraModulePackages = [ hp-omen-linux-module ]; boot.kernelModules = [ "hp-wmi" ]; users.groups.omen-rgb = { }; users.users.${config.var.username}.extraGroups = [ "omen-rgb" ]; systemd.tmpfiles.rules = [ "w /sys/devices/platform/hp-wmi/rgb_zones/zone00 0660 root omen-rgb -" "w /sys/devices/platform/hp-wmi/rgb_zones/zone01 0660 root omen-rgb -" "w /sys/devices/platform/hp-wmi/rgb_zones/zone02 0660 root omen-rgb -" "w /sys/devices/platform/hp-wmi/rgb_zones/zone03 0660 root omen-rgb -" ]; services.udev.extraRules = '' SUBSYSTEM=="platform", KERNEL=="hp-wmi", ACTION=="add", \ RUN+="${pkgs.coreutils-full}/bin/sleep 2", \ RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone00", \ RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone00", \ RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone01", \ RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone01", \ RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone02", \ RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone02", \ RUN+="${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone03", \ RUN+="${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone03" ''; # systemd.services.fix-hp-omen-perms = { # description = "Fix HP Omen keyboard RGB zone permissions"; # after = [ "systemd-modules-load.service" ]; # wantedBy = [ "multi-user.target" ]; # serviceConfig = { # Type = "oneshot"; # ExecStart = '' # ${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone00 # ${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone00 # ${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone01 # ${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone01 # ${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone02 # ${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone02 # ${pkgs.coreutils}/bin/chgrp omen-rgb /sys/devices/platform/hp-wmi/rgb_zones/zone03 # ${pkgs.coreutils}/bin/chmod 0660 /sys/devices/platform/hp-wmi/rgb_zones/zone03 # ''; # }; # }; }