summaryrefslogtreecommitdiffstats
path: root/lass/2configs/antimicrox/default.nix
blob: 2b683b8bc1a5e0a705e577652d7c49ad51c58d1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
{ config, lib, pkgs, ... }:
{
  systemd.services.antimicrox = {
    after = [ "display-manager.service" ];
    wantedBy = [ "multi-user.target" ];
    environment = {
      DISPLAY = ":0";
    };
    serviceConfig = {
      User = config.users.users.mainUser.name;
      ExecStartPre = lib.singleton (pkgs.writeDash "init_state" "echo 0 > /tmp/gamepad.state");
      ExecStart = "${pkgs.antimicrox}/bin/antimicrox --hidden --profile ${./mouse.gamecontroller.amgp}";
    };
  };

  services.udev.extraRules = ''
    KERNEL=="uinput", MODE="0660", GROUP="input", OPTIONS+="static_node=uinput"
  '';

  environment.systemPackages = [
    pkgs.antimicrox
    (pkgs.writers.writeDashBin "gamepad_mouse_disable" ''
      echo 1 > /tmp/gamepad.state
      ${pkgs.antimicrox}/bin/antimicrox --profile ${./empty.gamecontroller.amgp}
    '')
    (pkgs.writers.writeDashBin "gamepad_mouse_enable" ''
      echo 0 > /tmp/gamepad.state
      ${pkgs.antimicrox}/bin/antimicrox --profile ${./mouse.gamecontroller.amgp}
    '')
    (pkgs.writers.writeDashBin "gamepad_mouse_toggle" ''
      state=$(${pkgs.coreutils}/bin/cat /tmp/gamepad.state)
      if [ "$state" = 1 ]; then
        /run/current-system/sw/bin/gamepad_mouse_enable
      else
        /run/current-system/sw/bin/gamepad_mouse_disable
      fi
    '')
  ];
}