summary refs log tree commit diff
path: root/nixos/modules/services/hardware/actkbd.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/services/hardware/actkbd.nix')
-rw-r--r--nixos/modules/services/hardware/actkbd.nix133
1 files changed, 0 insertions, 133 deletions
diff --git a/nixos/modules/services/hardware/actkbd.nix b/nixos/modules/services/hardware/actkbd.nix
deleted file mode 100644
index b499de97b2c..00000000000
--- a/nixos/modules/services/hardware/actkbd.nix
+++ /dev/null
@@ -1,133 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let
-
-  cfg = config.services.actkbd;
-
-  configFile = pkgs.writeText "actkbd.conf" ''
-    ${concatMapStringsSep "\n"
-      ({ keys, events, attributes, command, ... }:
-        ''${concatMapStringsSep "+" toString keys}:${concatStringsSep "," events}:${concatStringsSep "," attributes}:${command}''
-      )
-      cfg.bindings}
-    ${cfg.extraConfig}
-  '';
-
-  bindingCfg = { ... }: {
-    options = {
-
-      keys = mkOption {
-        type = types.listOf types.int;
-        description = "List of keycodes to match.";
-      };
-
-      events = mkOption {
-        type = types.listOf (types.enum ["key" "rep" "rel"]);
-        default = [ "key" ];
-        description = "List of events to match.";
-      };
-
-      attributes = mkOption {
-        type = types.listOf types.str;
-        default = [ "exec" ];
-        description = "List of attributes.";
-      };
-
-      command = mkOption {
-        type = types.str;
-        default = "";
-        description = "What to run.";
-      };
-
-    };
-  };
-
-in
-
-{
-
-  ###### interface
-
-  options = {
-
-    services.actkbd = {
-
-      enable = mkOption {
-        type = types.bool;
-        default = false;
-        description = ''
-          Whether to enable the <command>actkbd</command> key mapping daemon.
-
-          Turning this on will start an <command>actkbd</command>
-          instance for every evdev input that has at least one key
-          (which is okay even for systems with tiny memory footprint,
-          since actkbd normally uses &lt;100 bytes of memory per
-          instance).
-
-          This allows binding keys globally without the need for e.g.
-          X11.
-        '';
-      };
-
-      bindings = mkOption {
-        type = types.listOf (types.submodule bindingCfg);
-        default = [];
-        example = lib.literalExpression ''
-          [ { keys = [ 113 ]; events = [ "key" ]; command = "''${pkgs.alsa-utils}/bin/amixer -q set Master toggle"; }
-          ]
-        '';
-        description = ''
-          Key bindings for <command>actkbd</command>.
-
-          See <command>actkbd</command> <filename>README</filename> for documentation.
-
-          The example shows a piece of what <option>sound.mediaKeys.enable</option> does when enabled.
-        '';
-      };
-
-      extraConfig = mkOption {
-        type = types.lines;
-        default = "";
-        description = ''
-          Literal contents to append to the end of actkbd configuration file.
-        '';
-      };
-
-    };
-
-  };
-
-
-  ###### implementation
-
-  config = mkIf cfg.enable {
-
-    services.udev.packages = lib.singleton (pkgs.writeTextFile {
-      name = "actkbd-udev-rules";
-      destination = "/etc/udev/rules.d/61-actkbd.rules";
-      text = ''
-        ACTION=="add", SUBSYSTEM=="input", KERNEL=="event[0-9]*", ENV{ID_INPUT_KEY}=="1", TAG+="systemd", ENV{SYSTEMD_WANTS}+="actkbd@$env{DEVNAME}.service"
-      '';
-    });
-
-    systemd.services."actkbd@" = {
-      enable = true;
-      restartIfChanged = true;
-      unitConfig = {
-        Description = "actkbd on %I";
-        ConditionPathExists = "%I";
-      };
-      serviceConfig = {
-        Type = "forking";
-        ExecStart = "${pkgs.actkbd}/bin/actkbd -D -c ${configFile} -d %I";
-      };
-    };
-
-    # For testing
-    environment.systemPackages = [ pkgs.actkbd ];
-
-  };
-
-}