feat: add asus-numpad package and module
All checks were successful
Build packages / Build derivations (push) Successful in 2m29s

This commit is contained in:
uku 2024-10-14 13:39:31 +02:00
parent 0e114fcc9a
commit ac2d57b85c
Signed by: uku
SSH key fingerprint: SHA256:4P0aN6M8ajKukNi6aPOaX0LacanGYtlfjmN+m/sHY/o
4 changed files with 91 additions and 0 deletions

View file

@ -39,6 +39,7 @@
nixosModules = {
reposilite = import ./modules/reposilite.nix;
asus-numpad = import ./modules/asus-numpad.nix self;
};
};
};

53
modules/asus-numpad.nix Normal file
View file

@ -0,0 +1,53 @@
self: {
lib,
config,
pkgs,
...
}: let
cfg = config.services.asus-numpad;
inherit (pkgs.stdenv.hostPlatform) system;
toml = pkgs.formats.toml {};
in {
options.services.asus-numpad = {
enable = lib.mkEnableOption "asus-numpad";
package = lib.mkPackageOption self.packages.${system} "asus-numpad" {};
settings = lib.mkOption {
description = "Options for the configuration file located at /etc/xdg/asus_numpad.toml. See https://github.com/iamkroot/asus-numpad#configuration";
example = {layout = "M433IA";};
type = lib.types.submodule {
freeformType = toml.type;
options.layout = lib.mkOption {
description = "Numpad key layout.";
type = lib.types.enum ["UX433FA" "M433IA" "UX581" "GX701" "GX531" "G533"];
};
};
};
};
config = lib.mkIf cfg.enable {
hardware = {
i2c.enable = true;
uinput.enable = true;
};
environment.etc."xdg/asus_numpad.toml".source = toml.generate "asus_numpad.toml" cfg.settings;
systemd.services.asus-numpad = {
enable = true;
wantedBy = ["multi-user.target"];
script = ''
${lib.getExe cfg.package}
'';
serviceConfig = {
Type = "simple";
Restart = "on-failure";
RestartSec = "5s";
TimeoutSec = "5s";
};
};
};
}

View file

@ -2,4 +2,5 @@ final: prev: {
enigma = prev.callPackage ./enigma.nix {};
vineflower = prev.callPackage ./vineflower.nix {};
koi = prev.kdePackages.callPackage ./koi.nix {};
asus-numpad = prev.callPackage ./asus-numpad.nix {};
}

36
pkgs/asus-numpad.nix Normal file
View file

@ -0,0 +1,36 @@
{
lib,
fetchFromGitHub,
rustPlatform,
pkg-config,
libevdev,
}:
rustPlatform.buildRustPackage {
pname = "asus-numpad";
version = "unstable-2024-09-15";
src = fetchFromGitHub {
owner = "iamkroot";
repo = "asus-numpad";
rev = "e78875c1f4c58e06199737f4ef5c6f48ac7cb21b";
hash = "sha256-5FqM80zUDucDA0VocJ7ODmKAC6gcd9QwBOHVVKa6iMI=";
};
cargoHash = "sha256-O7Iu+ugJ81suh0a09jApyiWwxbo/RGaFW7aiZKnWQUE=";
nativeBuildInputs = [
pkg-config
];
buildInputs = [
libevdev
];
meta = with lib; {
mainProgram = "asus-numpad";
description = "Linux driver for Asus laptops to activate numpad on touchpad";
homepage = "https://github.com/iamkroot/asus-numpad";
license = licenses.mit;
platforms = platforms.linux;
};
}