summaryrefslogtreecommitdiffstats
path: root/nixos/modules/services/x11/hardware
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2013-10-10 13:28:20 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2013-10-10 13:28:20 +0200
commit5c1f8cbc70cd5e6867ef6a2a06d27a40daa07010 (patch)
treea6c0f605be6de3f372ae69905b331f9f75452da7 /nixos/modules/services/x11/hardware
parent6070bc016bd2fd945b04347e25cfd3738622d2ac (diff)
Move all of NixOS to nixos/ in preparation of the repository merge
Diffstat (limited to 'nixos/modules/services/x11/hardware')
-rw-r--r--nixos/modules/services/x11/hardware/multitouch.nix60
-rw-r--r--nixos/modules/services/x11/hardware/synaptics.nix122
-rw-r--r--nixos/modules/services/x11/hardware/wacom.nix47
3 files changed, 229 insertions, 0 deletions
diff --git a/nixos/modules/services/x11/hardware/multitouch.nix b/nixos/modules/services/x11/hardware/multitouch.nix
new file mode 100644
index 000000000000..4f9048bfd910
--- /dev/null
+++ b/nixos/modules/services/x11/hardware/multitouch.nix
@@ -0,0 +1,60 @@
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+let cfg = config.services.xserver.multitouch; in
+
+{
+
+ options = {
+
+ services.xserver.multitouch = {
+
+ enable = mkOption {
+ default = false;
+ example = true;
+ description = "Whether to enable multitouch touchpad support.";
+ };
+
+ invertScroll = mkOption {
+ default = false;
+ example = true;
+ type = types.bool;
+ description = "Whether to invert scrolling direction à la OSX Lion";
+ };
+
+ ignorePalm = mkOption {
+ default = false;
+ example = true;
+ type = types.bool;
+ description = "Whether to ignore touches detected as being the palm (i.e when typing)";
+ };
+
+ };
+
+ };
+
+ config = mkIf cfg.enable {
+
+ services.xserver.modules = [ pkgs.xf86_input_mtrack ];
+
+ services.xserver.config =
+ ''
+ # Automatically enable the multitouch driver
+ Section "InputClass"
+ MatchIsTouchpad "on"
+ Identifier "Touchpads"
+ Driver "mtrack"
+ Option "IgnorePalm" "${if cfg.ignorePalm then "true" else "false"}"
+ ${optionalString cfg.invertScroll ''
+ Option "ScrollUpButton" "5"
+ Option "ScrollDownButton" "4"
+ Option "ScrollLeftButton" "7"
+ Option "ScrollRightButton" "6"
+ ''}
+ EndSection
+ '';
+
+ };
+
+}
diff --git a/nixos/modules/services/x11/hardware/synaptics.nix b/nixos/modules/services/x11/hardware/synaptics.nix
new file mode 100644
index 000000000000..d16142a5fdf3
--- /dev/null
+++ b/nixos/modules/services/x11/hardware/synaptics.nix
@@ -0,0 +1,122 @@
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+let cfg = config.services.xserver.synaptics; in
+
+{
+
+ options = {
+
+ services.xserver.synaptics = {
+
+ enable = mkOption {
+ default = false;
+ example = true;
+ description = "Whether to enable touchpad support.";
+ };
+
+ dev = mkOption {
+ default = null;
+ example = "/dev/input/event0";
+ description =
+ ''
+ Path for touchpad device. Set to null to apply to any
+ auto-detected touchpad.
+ '';
+ };
+
+ accelFactor = mkOption {
+ default = "0.001";
+ description = "Cursor acceleration (how fast speed increases from minSpeed to maxSpeed).";
+ };
+
+ minSpeed = mkOption {
+ default = "0.6";
+ description = "Cursor speed factor for precision finger motion.";
+ };
+
+ maxSpeed = mkOption {
+ default = "1.0";
+ description = "Cursor speed factor for highest-speed finger motion.";
+ };
+
+ twoFingerScroll = mkOption {
+ default = false;
+ description = "Whether to enable two-finger drag-scrolling.";
+ };
+
+ vertEdgeScroll = mkOption {
+ default = ! cfg.twoFingerScroll;
+ description = "Whether to enable vertical edge drag-scrolling.";
+ };
+
+ tapButtons = mkOption {
+ default = true;
+ example = false;
+ description = "Whether to enable tap buttons.";
+ };
+
+ palmDetect = mkOption {
+ default = false;
+ example = true;
+ description = "Whether to enable palm detection (hardware support required)";
+ };
+
+ horizontalScroll = mkOption {
+ default = true;
+ example = false;
+ description = "Whether to enable horizontal scrolling (on touchpad)";
+ };
+
+ additionalOptions = mkOption {
+ default = "";
+ example = ''
+ Option "RTCornerButton" "2"
+ Option "RBCornerButton" "3"
+ '';
+ description = ''
+ Additional options for synaptics touchpad driver.
+ '';
+ };
+
+ };
+
+ };
+
+
+ config = mkIf cfg.enable {
+
+ services.xserver.modules = [ pkgs.xorg.xf86inputsynaptics ];
+
+ environment.systemPackages = [ pkgs.xorg.xf86inputsynaptics ];
+
+ services.xserver.config =
+ ''
+ # Automatically enable the synaptics driver for all touchpads.
+ Section "InputClass"
+ Identifier "synaptics touchpad catchall"
+ MatchIsTouchpad "on"
+ ${optionalString (cfg.dev != null) ''MatchDevicePath "${cfg.dev}"''}
+ Driver "synaptics"
+ Option "MaxTapTime" "180"
+ Option "MaxTapMove" "220"
+ Option "MinSpeed" "${cfg.minSpeed}"
+ Option "MaxSpeed" "${cfg.maxSpeed}"
+ Option "AccelFactor" "${cfg.accelFactor}"
+ Option "TapButton1" "${if cfg.tapButtons then "1" else "0"}"
+ Option "TapButton2" "${if cfg.tapButtons then "2" else "0"}"
+ Option "TapButton3" "${if cfg.tapButtons then "3" else "0"}"
+ ${if cfg.tapButtons then "" else ''Option "MaxTapTime" "0"''}
+ Option "VertTwoFingerScroll" "${if cfg.twoFingerScroll then "1" else "0"}"
+ Option "HorizTwoFingerScroll" "${if cfg.twoFingerScroll then "1" else "0"}"
+ Option "VertEdgeScroll" "${if cfg.vertEdgeScroll then "1" else "0"}"
+ ${if cfg.palmDetect then ''Option "PalmDetect" "1"'' else ""}
+ ${if cfg.horizontalScroll then "" else ''Option "HorizScrollDelta" "0"''}
+ ${cfg.additionalOptions}
+ EndSection
+ '';
+
+ };
+
+}
diff --git a/nixos/modules/services/x11/hardware/wacom.nix b/nixos/modules/services/x11/hardware/wacom.nix
new file mode 100644
index 000000000000..dfc588cd2132
--- /dev/null
+++ b/nixos/modules/services/x11/hardware/wacom.nix
@@ -0,0 +1,47 @@
+{ config, pkgs, ... }:
+
+with pkgs.lib;
+
+let
+
+ cfg = config.services.xserver.wacom;
+
+in
+
+{
+
+ options = {
+
+ services.xserver.wacom = {
+
+ enable = mkOption {
+ default = false;
+ description = ''
+ Whether to enable the Wacom touchscreen/digitizer/tablet.
+ If you ever have any issues such as, try switching to terminal (ctrl-alt-F1) and back
+ which will make Xorg reconfigure the device ?
+
+ If you're not satisfied by the default behaviour you can override
+ <option>environment.etc."X11/xorg.conf.d/50-wacom.conf"</option> in
+ configuration.nix easily.
+ '';
+ };
+
+ };
+
+ };
+
+
+ config = mkIf cfg.enable {
+
+ environment.systemPackages = [ pkgs.xf86_input_wacom ]; # provides xsetwacom
+
+ services.xserver.modules = [ pkgs.xf86_input_wacom ];
+
+ services.udev.packages = [ pkgs.xf86_input_wacom ];
+
+ environment.etc."X11/xorg.conf.d/50-wacom.conf".source = "${pkgs.xf86_input_wacom}/share/X11/xorg.conf.d/50-wacom.conf";
+
+ };
+
+}