From 9a859fb7f9fc7c81b78122e1c47765aa61e7aa28 Mon Sep 17 00:00:00 2001 From: Matt Votava Date: Fri, 21 Sep 2018 02:13:49 -0700 Subject: [PATCH] libratbag: init at v0.9.903 Add package libratbag and service module ratbagd Libratbag contains ratbagd daemon and ratbagctl cli to configure buttons, dpi, leds, etc. of gaming mice. Add mvnetbiz to maintainers. --- maintainers/maintainer-list.nix | 5 +++ nixos/modules/module-list.nix | 1 + nixos/modules/services/hardware/ratbagd.nix | 32 +++++++++++++++++ pkgs/os-specific/linux/libratbag/default.nix | 36 ++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 5 files changed, 76 insertions(+) create mode 100644 nixos/modules/services/hardware/ratbagd.nix create mode 100644 pkgs/os-specific/linux/libratbag/default.nix diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index ecec7bbaf7e..5b6ada894a7 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -2808,6 +2808,11 @@ github = "muflax"; name = "Stefan Dorn"; }; + mvnetbiz = { + email = "mvnetbiz@gmail.com"; + github = "mvnetbiz"; + name = "Matt Votava"; + }; myrl = { email = "myrl.0xf@gmail.com"; github = "myrl"; diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 3f3123798f5..84ce52909c0 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -275,6 +275,7 @@ ./services/hardware/nvidia-optimus.nix ./services/hardware/pcscd.nix ./services/hardware/pommed.nix + ./services/hardware/ratbagd.nix ./services/hardware/sane.nix ./services/hardware/sane_extra_backends/brscan4.nix ./services/hardware/tcsd.nix diff --git a/nixos/modules/services/hardware/ratbagd.nix b/nixos/modules/services/hardware/ratbagd.nix new file mode 100644 index 00000000000..103e1d2315a --- /dev/null +++ b/nixos/modules/services/hardware/ratbagd.nix @@ -0,0 +1,32 @@ +{ config, lib, pkgs, ... }: + +with lib; + +let + cfg = config.services.ratbagd; +in +{ + ###### interface + + options = { + services.ratbagd = { + enable = mkOption { + default = false; + description = '' + Whether to enable ratbagd for configuring gaming mice. + ''; + }; + }; + }; + + ###### implementation + + config = mkIf cfg.enable { + # Give users access to the "ratbagctl" tool + environment.systemPackages = [ pkgs.libratbag ]; + + services.dbus.packages = [ pkgs.libratbag ]; + + systemd.packages = [ pkgs.libratbag ]; + }; +} diff --git a/pkgs/os-specific/linux/libratbag/default.nix b/pkgs/os-specific/linux/libratbag/default.nix new file mode 100644 index 00000000000..271dc156695 --- /dev/null +++ b/pkgs/os-specific/linux/libratbag/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig +, glib, systemd, udev, libevdev, gitMinimal, check, valgrind, swig, python3 }: + +stdenv.mkDerivation rec { + name = "libratbag-${version}"; + version = "0.9.903"; + + src = fetchFromGitHub { + owner = "libratbag"; + repo = "libratbag"; + rev = "v${version}"; + sha256 = "0cr5skrb7a5mgj7dkm647ib8336hb88bf11blaf6xldafi8b0jlj"; + }; + + + # todo: python should be in buildInputs, but right now meson propagates + # its own python. see: https://github.com/NixOS/nixpkgs/pull/46020 + nativeBuildInputs = [ + (python3.withPackages (ps: with ps; [ evdev pygobject3 ])) + meson ninja pkgconfig gitMinimal swig check valgrind + ]; + + buildInputs = [ glib systemd udev libevdev ]; + + mesonFlags = [ + "-Dsystemd-unit-dir=./lib/systemd/system/" + ]; + + meta = with stdenv.lib; { + description = "Configuration library for gaming mice"; + homepage = https://github.com/libratbag/libratbag; + license = licenses.mit; + maintainers = with maintainers; [ mvnetbiz ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index cd7dca53c84..5540098efb9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15022,6 +15022,8 @@ with pkgs; libertinus = callPackage ../data/fonts/libertinus { }; + libratbag = callPackage ../os-specific/linux/libratbag { }; + libre-baskerville = callPackage ../data/fonts/libre-baskerville { }; libre-bodoni = callPackage ../data/fonts/libre-bodoni { };