feat: add asus-numpad package and module
All checks were successful
Build packages / Build derivations (push) Successful in 2m29s
All checks were successful
Build packages / Build derivations (push) Successful in 2m29s
This commit is contained in:
parent
0e114fcc9a
commit
ac2d57b85c
4 changed files with 91 additions and 0 deletions
53
modules/asus-numpad.nix
Normal file
53
modules/asus-numpad.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue