games: add wii-u-gc-adapter package and service

This commit is contained in:
Timothy DeHerrera 2020-06-16 20:52:14 -06:00
parent adce24be8b
commit 38b2ba7dda
No known key found for this signature in database
GPG Key ID: 8985725DB5B0C122
4 changed files with 69 additions and 1 deletions

View File

@ -0,0 +1,40 @@
{ config, lib, pkgs, ... }:
with lib;
let cfg = config.services.wii-u-gc-adapter;
in {
options = {
services.wii-u-gc-adapter = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable wii-u-gc-adapter service to automatically start
when the controller adapter is plugged in.
'';
};
};
};
config = mkIf cfg.enable {
services.udev.extraRules = ''
# start wii-u-gc-adapter when plugged in
ACTION=="add", SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="057e", \
ENV{ID_MODEL_ID}=="0337", TAG+="systemd", \
ENV{SYSTEMD_ALIAS}="/sys/subsystem/usb/wii-u-gc-adapter", \
ENV{SYSTEMD_WANTS}+="wii-u-gc-adapter.service"
# workaround for https://github.com/systemd/systemd/issues/7587
ACTION=="remove", SUBSYSTEM=="usb", ENV{PRODUCT}=="57e/337/100", \
TAG+="systemd"
'';
systemd.services.wii-u-gc-adapter = {
enable = true;
script = ''
${pkgs.wii-u-gc-adapter}/bin/wii-u-gc-adapter
'';
unitConfig = { StopWhenUnneeded = true; };
};
};
}

View File

@ -5,4 +5,5 @@ final: prev: {
purs = prev.callPackage ./shells/zsh/purs { };
pure = prev.callPackage ./shells/zsh/pure { };
dzvol = prev.callPackage ./applications/misc/dzvol.nix { };
wii-u-gc-adapter = prev.callPackage ./misc/drivers/wii-u-gc-adapter { };
}

View File

@ -0,0 +1,21 @@
{ stdenv, fetchFromGitHub, pkgconfig, libudev, libusb, ... }:
stdenv.mkDerivation {
name = "wii-u-gc-adapter";
buildInputs = [ pkgconfig libudev libusb ];
src = fetchFromGitHub {
owner = "ToadKing";
repo = "wii-u-gc-adapter";
rev = "ae6b46d7a2b32068e746f1d2d816f4b3d6a7ac80";
hash = "sha256-Dk4jMaL5P85yxH3pDVBDNKjtGL4gRkhN5CJqZnOAshE=";
};
installPhase = ''
mkdir -p $out/bin
install wii-u-gc-adapter $out/bin
'';
hardeningDisable = [ "format" ];
}

View File

@ -1,5 +1,9 @@
{ unstablePkgs, ... }: {
imports = [ ../graphical ./udev.nix ];
imports = [
../graphical
./udev.nix
../../modules/services/hardware/wii-u-gc-adapter.nix
];
environment.systemPackages = with unstablePkgs; [
retroarchBare
steam
@ -8,6 +12,8 @@
qjoypad
];
services.wii-u-gc-adapter.enable = true;
# fps games on laptop need this
services.xserver.libinput.disableWhileTyping = false;