From 31e03a7fb8720c5edfcb8a364901fefc7681af45 Mon Sep 17 00:00:00 2001 From: Hadi <112569860+anotherhadi@users.noreply.github.com> Date: Fri, 18 Apr 2025 10:18:05 +0200 Subject: [PATCH] Init hp-omen-linux-module to controle the keyboard backlight on omen laptop Former-commit-id: d69b8c39e37144528411b7c19a6a729a671a8204 --- hosts/laptop/configuration.nix | 1 + nixos/omen.nix | 72 ++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 nixos/omen.nix diff --git a/hosts/laptop/configuration.nix b/hosts/laptop/configuration.nix index b2bba90..89170dc 100644 --- a/hosts/laptop/configuration.nix +++ b/hosts/laptop/configuration.nix @@ -14,6 +14,7 @@ ../../nixos/utils.nix # ../../nixos/docker.nix ../../nixos/tailscale.nix + ../../nixos/omen.nix # For my laptop only # You should let those lines as is ./hardware-configuration.nix diff --git a/nixos/omen.nix b/nixos/omen.nix new file mode 100644 index 0000000..68ed813 --- /dev/null +++ b/nixos/omen.nix @@ -0,0 +1,72 @@ +{ 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}/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 + # ''; + # }; + # }; +}