2024-03-23 14:23:43 -07:00

84 lines
2.7 KiB
Nix

{ config, lib, pkgs, ... }:
with lib;
let
hostname = config.instance.hostname;
enable-gui = config.fudo.hosts."${hostname}".enable-gui;
# 70:9C:D1:0E:48:AD
in {
config = mkIf enable-gui {
environment.systemPackages = with pkgs; [ xboxdrv ];
services.udev.extraRules = let
# btStartScript = concatStringsSep "," [
# ''SUBSYSTEM=="input"''
# ''ATTR{PHYS}=="70:9c:d1:0e:48:ad"''
# ''ATTR{ACTION}=="add"''
# ''ATTR{PRODUCT}=="5/57e/2009/8001"''
# ''
# RUN+="${pkgs.systemd}/bin/systemctl start controller-8bitdo-ultimate-xinput@70_9C_D1_0E_48_AD"''
# ];
# btStopScript = concatStringsSep "," [
# ''SUBSYSTEM=="input"''
# ''ATTR{PHYS}=="70:9c:d1:0e:48:ad"''
# ''ATTR{ACTION}=="remove"''
# ''ATTR{PRODUCT}=="5/57e/2009/8001"''
# ''
# RUN+="${pkgs.systemd}/bin/systemctl stop controller-8bitdo-ultimate-xinput@70_9C_D1_0E_48_AD"''
# ];
# usbStartScript = concatStringsSep "," [
# ''SUBSYSTEM=="usb"''
# ''ATTR{idVendor}=="2dc8"''
# ''ATTR{idProduct}=="3106"''
# ''ATTR{manufacturer}=="8BitDo"''
# ''
# RUN+="${pkgs.systemd}/bin/systemctl start controller-8bitdo-ultimate-xinput@2dc8:3106"''
# ];
# usbStopScript = concatStringsSep "," [
# ''SUBSYSTEM=="usb"''
# ''ATTR{idVendor}=="2dc8"''
# ''ATTR{idProduct}=="3016"'' # NOTE: 3106 - connect, 3016 - disconnect
# ''ATTR{manufacturer}=="8BitDo"''
# ''
# RUN+="${pkgs.systemd}/bin/systemctl stop controller-8bitdo-ultimate-xinput@2dc8:3106''
# ];
startScript = concatStringsSep "," [
''SUBSYSTEM=="input"''
''ACTION=="add"''
''ATTR{PRODUCT}=="5/57e/2009/8001"''
''
RUN+="${pkgs.systemd}/bin/systemctl start controller-8bitdo-ultimate-xinput@$env{ID_MODEL}"''
];
stopScript = concatStringsSep "," [
''SUBSYSTEM=="input"''
''ACTION=="remove"''
''ATTR{PRODUCT}=="5/57e/2009/8001"''
''
RUN+="${pkgs.systemd}/bin/systemctl stop controller-8bitdo-ultimate-xinput@$env{ID_MODEL}"''
];
in concatStringsSep "\n" [ startScript stopScript ];
systemd.services."controller-8bitDo-ultimate-xinput@" = {
unitConfig.Dsecription =
"8BitDo Ultimate Controller XInput mode xboxdrv daemon";
serviceConfig = {
Type = "simple";
ExecStart =
pkgs.writeShellScript "controller-8bitDo-ultimate-xinput.sh" ''
echo "starting xboxdrv for $ID_MODEL"
${pkgs.xboxdrv}/bin/xboxdrv --mimic-xpad --silent --type xbox360 --device-by-id %I --force-feedback;
'';
};
};
};
}