Loading nixos/modules/services/hardware/libinput.nix +70 −73 Original line number Diff line number Diff line { config, lib, pkgs, ... }: with lib; let cfg = config.services.libinput; xorgBool = v: if v then "on" else "off"; mkConfigForDevice = deviceType: { dev = mkOption { type = types.nullOr types.str; dev = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; example = "/dev/input/event0"; description = '' Loading @@ -17,8 +14,8 @@ let cfg = config.services.libinput; ''; }; accelProfile = mkOption { type = types.enum [ "flat" "adaptive" "custom" ]; accelProfile = lib.mkOption { type = lib.types.enum [ "flat" "adaptive" "custom" ]; default = "adaptive"; example = "flat"; description = '' Loading @@ -36,8 +33,8 @@ let cfg = config.services.libinput; ''; }; accelSpeed = mkOption { type = types.nullOr types.str; accelSpeed = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; example = "-0.5"; description = '' Loading @@ -46,8 +43,8 @@ let cfg = config.services.libinput; ''; }; accelPointsFallback = mkOption { type = types.nullOr (types.listOf types.number); accelPointsFallback = lib.mkOption { type = lib.types.nullOr (lib.types.listOf lib.types.number); default = null; example = [ 0.0 1.0 2.4 2.5 ]; description = '' Loading @@ -56,8 +53,8 @@ let cfg = config.services.libinput; ''; }; accelPointsMotion = mkOption { type = types.nullOr (types.listOf types.number); accelPointsMotion = lib.mkOption { type = lib.types.nullOr (lib.types.listOf lib.types.number); default = null; example = [ 0.0 1.0 2.4 2.5 ]; description = '' Loading @@ -66,8 +63,8 @@ let cfg = config.services.libinput; ''; }; accelPointsScroll = mkOption { type = types.nullOr (types.listOf types.number); accelPointsScroll = lib.mkOption { type = lib.types.nullOr (lib.types.listOf lib.types.number); default = null; example = [ 0.0 1.0 2.4 2.5 ]; description = '' Loading @@ -76,8 +73,8 @@ let cfg = config.services.libinput; ''; }; accelStepFallback = mkOption { type = types.nullOr types.number; accelStepFallback = lib.mkOption { type = lib.types.nullOr lib.types.number; default = null; example = 0.1; description = '' Loading @@ -87,8 +84,8 @@ let cfg = config.services.libinput; ''; }; accelStepMotion = mkOption { type = types.nullOr types.number; accelStepMotion = lib.mkOption { type = lib.types.nullOr lib.types.number; default = null; example = 0.1; description = '' Loading @@ -98,8 +95,8 @@ let cfg = config.services.libinput; ''; }; accelStepScroll = mkOption { type = types.nullOr types.number; accelStepScroll = lib.mkOption { type = lib.types.nullOr lib.types.number; default = null; example = 0.1; description = '' Loading @@ -109,8 +106,8 @@ let cfg = config.services.libinput; ''; }; buttonMapping = mkOption { type = types.nullOr types.str; buttonMapping = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; example = "1 6 3 4 5 0 7"; description = '' Loading @@ -123,8 +120,8 @@ let cfg = config.services.libinput; ''; }; calibrationMatrix = mkOption { type = types.nullOr types.str; calibrationMatrix = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; example = "0.5 0 0 0 0.8 0.1 0 0 1"; description = '' Loading @@ -133,8 +130,8 @@ let cfg = config.services.libinput; ''; }; clickMethod = mkOption { type = types.nullOr (types.enum [ "none" "buttonareas" "clickfinger" ]); clickMethod = lib.mkOption { type = lib.types.nullOr (lib.types.enum [ "none" "buttonareas" "clickfinger" ]); default = null; example = "buttonareas"; description = '' Loading @@ -145,14 +142,14 @@ let cfg = config.services.libinput; ''; }; leftHanded = mkOption { type = types.bool; leftHanded = lib.mkOption { type = lib.types.bool; default = false; description = "Enables left-handed button orientation, i.e. swapping left and right buttons."; }; middleEmulation = mkOption { type = types.bool; middleEmulation = lib.mkOption { type = lib.types.bool; default = true; description = '' Enables middle button emulation. When enabled, pressing the left and right buttons Loading @@ -160,14 +157,14 @@ let cfg = config.services.libinput; ''; }; naturalScrolling = mkOption { type = types.bool; naturalScrolling = lib.mkOption { type = lib.types.bool; default = false; description = "Enables or disables natural scrolling behavior."; }; scrollButton = mkOption { type = types.nullOr types.int; scrollButton = lib.mkOption { type = lib.types.nullOr lib.types.int; default = null; example = 1; description = '' Loading @@ -176,8 +173,8 @@ let cfg = config.services.libinput; ''; }; scrollMethod = mkOption { type = types.enum [ "twofinger" "edge" "button" "none" ]; scrollMethod = lib.mkOption { type = lib.types.enum [ "twofinger" "edge" "button" "none" ]; default = "twofinger"; example = "edge"; description = '' Loading @@ -186,8 +183,8 @@ let cfg = config.services.libinput; ''; }; horizontalScrolling = mkOption { type = types.bool; horizontalScrolling = lib.mkOption { type = lib.types.bool; default = true; description = '' Enables or disables horizontal scrolling. When disabled, this driver will discard any Loading @@ -196,8 +193,8 @@ let cfg = config.services.libinput; ''; }; sendEventsMode = mkOption { type = types.enum [ "disabled" "enabled" "disabled-on-external-mouse" ]; sendEventsMode = lib.mkOption { type = lib.types.enum [ "disabled" "enabled" "disabled-on-external-mouse" ]; default = "enabled"; example = "disabled"; description = '' Loading @@ -206,24 +203,24 @@ let cfg = config.services.libinput; ''; }; tapping = mkOption { type = types.bool; tapping = lib.mkOption { type = lib.types.bool; default = true; description = '' Enables or disables tap-to-click behavior. ''; }; tappingButtonMap = mkOption { type = types.nullOr (types.enum [ "lrm" "lmr" ]); tappingButtonMap = lib.mkOption { type = lib.types.nullOr (lib.types.enum [ "lrm" "lmr" ]); default = null; description = '' Set the button mapping for 1/2/3-finger taps to left/right/middle or left/middle/right, respectively. ''; }; tappingDragLock = mkOption { type = types.bool; tappingDragLock = lib.mkOption { type = lib.types.bool; default = true; description = '' Enables or disables drag lock during tapping behavior. When enabled, a finger up during tap- Loading @@ -232,8 +229,8 @@ let cfg = config.services.libinput; ''; }; transformationMatrix = mkOption { type = types.nullOr types.str; transformationMatrix = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; example = "0.5 0 0 0 0.8 0.1 0 0 1"; description = '' Loading @@ -242,16 +239,16 @@ let cfg = config.services.libinput; ''; }; disableWhileTyping = mkOption { type = types.bool; disableWhileTyping = lib.mkOption { type = lib.types.bool; default = false; description = '' Disable input method while typing. ''; }; additionalOptions = mkOption { type = types.lines; additionalOptions = lib.mkOption { type = lib.types.lines; default = ""; example = '' Loading @@ -269,28 +266,28 @@ let cfg = config.services.libinput; Identifier "libinput ${deviceType} configuration" MatchDriver "libinput" MatchIs${matchIs} "${xorgBool true}" ${optionalString (cfg.${deviceType}.dev != null) ''MatchDevicePath "${cfg.${deviceType}.dev}"''} ${lib.optionalString (cfg.${deviceType}.dev != null) ''MatchDevicePath "${cfg.${deviceType}.dev}"''} Option "AccelProfile" "${cfg.${deviceType}.accelProfile}" ${optionalString (cfg.${deviceType}.accelSpeed != null) ''Option "AccelSpeed" "${cfg.${deviceType}.accelSpeed}"''} ${optionalString (cfg.${deviceType}.accelPointsFallback != null) ''Option "AccelPointsFallback" "${toString cfg.${deviceType}.accelPointsFallback}"''} ${optionalString (cfg.${deviceType}.accelPointsMotion != null) ''Option "AccelPointsMotion" "${toString cfg.${deviceType}.accelPointsMotion}"''} ${optionalString (cfg.${deviceType}.accelPointsScroll != null) ''Option "AccelPointsScroll" "${toString cfg.${deviceType}.accelPointsScroll}"''} ${optionalString (cfg.${deviceType}.accelStepFallback != null) ''Option "AccelStepFallback" "${toString cfg.${deviceType}.accelStepFallback}"''} ${optionalString (cfg.${deviceType}.accelStepMotion != null) ''Option "AccelStepMotion" "${toString cfg.${deviceType}.accelStepMotion}"''} ${optionalString (cfg.${deviceType}.accelStepScroll != null) ''Option "AccelStepScroll" "${toString cfg.${deviceType}.accelStepScroll}"''} ${optionalString (cfg.${deviceType}.buttonMapping != null) ''Option "ButtonMapping" "${cfg.${deviceType}.buttonMapping}"''} ${optionalString (cfg.${deviceType}.calibrationMatrix != null) ''Option "CalibrationMatrix" "${cfg.${deviceType}.calibrationMatrix}"''} ${optionalString (cfg.${deviceType}.transformationMatrix != null) ''Option "TransformationMatrix" "${cfg.${deviceType}.transformationMatrix}"''} ${optionalString (cfg.${deviceType}.clickMethod != null) ''Option "ClickMethod" "${cfg.${deviceType}.clickMethod}"''} ${lib.optionalString (cfg.${deviceType}.accelSpeed != null) ''Option "AccelSpeed" "${cfg.${deviceType}.accelSpeed}"''} ${lib.optionalString (cfg.${deviceType}.accelPointsFallback != null) ''Option "AccelPointsFallback" "${toString cfg.${deviceType}.accelPointsFallback}"''} ${lib.optionalString (cfg.${deviceType}.accelPointsMotion != null) ''Option "AccelPointsMotion" "${toString cfg.${deviceType}.accelPointsMotion}"''} ${lib.optionalString (cfg.${deviceType}.accelPointsScroll != null) ''Option "AccelPointsScroll" "${toString cfg.${deviceType}.accelPointsScroll}"''} ${lib.optionalString (cfg.${deviceType}.accelStepFallback != null) ''Option "AccelStepFallback" "${toString cfg.${deviceType}.accelStepFallback}"''} ${lib.optionalString (cfg.${deviceType}.accelStepMotion != null) ''Option "AccelStepMotion" "${toString cfg.${deviceType}.accelStepMotion}"''} ${lib.optionalString (cfg.${deviceType}.accelStepScroll != null) ''Option "AccelStepScroll" "${toString cfg.${deviceType}.accelStepScroll}"''} ${lib.optionalString (cfg.${deviceType}.buttonMapping != null) ''Option "ButtonMapping" "${cfg.${deviceType}.buttonMapping}"''} ${lib.optionalString (cfg.${deviceType}.calibrationMatrix != null) ''Option "CalibrationMatrix" "${cfg.${deviceType}.calibrationMatrix}"''} ${lib.optionalString (cfg.${deviceType}.transformationMatrix != null) ''Option "TransformationMatrix" "${cfg.${deviceType}.transformationMatrix}"''} ${lib.optionalString (cfg.${deviceType}.clickMethod != null) ''Option "ClickMethod" "${cfg.${deviceType}.clickMethod}"''} Option "LeftHanded" "${xorgBool cfg.${deviceType}.leftHanded}" Option "MiddleEmulation" "${xorgBool cfg.${deviceType}.middleEmulation}" Option "NaturalScrolling" "${xorgBool cfg.${deviceType}.naturalScrolling}" ${optionalString (cfg.${deviceType}.scrollButton != null) ''Option "ScrollButton" "${toString cfg.${deviceType}.scrollButton}"''} ${lib.optionalString (cfg.${deviceType}.scrollButton != null) ''Option "ScrollButton" "${toString cfg.${deviceType}.scrollButton}"''} Option "ScrollMethod" "${cfg.${deviceType}.scrollMethod}" Option "HorizontalScrolling" "${xorgBool cfg.${deviceType}.horizontalScrolling}" Option "SendEventsMode" "${cfg.${deviceType}.sendEventsMode}" Option "Tapping" "${xorgBool cfg.${deviceType}.tapping}" ${optionalString (cfg.${deviceType}.tappingButtonMap != null) ''Option "TappingButtonMap" "${cfg.${deviceType}.tappingButtonMap}"''} ${lib.optionalString (cfg.${deviceType}.tappingButtonMap != null) ''Option "TappingButtonMap" "${cfg.${deviceType}.tappingButtonMap}"''} Option "TappingDragLock" "${xorgBool cfg.${deviceType}.tappingDragLock}" Option "DisableWhileTyping" "${xorgBool cfg.${deviceType}.disableWhileTyping}" ${cfg.${deviceType}.additionalOptions} Loading @@ -298,7 +295,7 @@ let cfg = config.services.libinput; in { imports = (map (option: mkRenamedOptionModule ([ "services" "xserver" "libinput" option ]) [ "services" "libinput" "touchpad" option ]) [ (map (option: lib.mkRenamedOptionModule ([ "services" "xserver" "libinput" option ]) [ "services" "libinput" "touchpad" option ]) [ "accelProfile" "accelSpeed" "buttonMapping" Loading @@ -318,15 +315,15 @@ in { "disableWhileTyping" "additionalOptions" ]) ++ [ (mkRenamedOptionModule [ "services" "xserver" "libinput" "enable" ] [ "services" "libinput" "enable" ]) (mkRenamedOptionModule [ "services" "xserver" "libinput" "mouse" ] [ "services" "libinput" "mouse" ]) (mkRenamedOptionModule [ "services" "xserver" "libinput" "touchpad" ] [ "services" "libinput" "touchpad" ]) (lib.mkRenamedOptionModule [ "services" "xserver" "libinput" "enable" ] [ "services" "libinput" "enable" ]) (lib.mkRenamedOptionModule [ "services" "xserver" "libinput" "mouse" ] [ "services" "libinput" "mouse" ]) (lib.mkRenamedOptionModule [ "services" "xserver" "libinput" "touchpad" ] [ "services" "libinput" "touchpad" ]) ]; options = { services.libinput = { enable = mkEnableOption "libinput" // { enable = lib.mkEnableOption "libinput" // { default = config.services.xserver.enable; defaultText = lib.literalExpression "config.services.xserver.enable"; }; Loading @@ -336,7 +333,7 @@ in { }; config = mkIf cfg.enable { config = lib.mkIf cfg.enable { services.xserver.modules = [ pkgs.xorg.xf86inputlibinput ]; Loading Loading
nixos/modules/services/hardware/libinput.nix +70 −73 Original line number Diff line number Diff line { config, lib, pkgs, ... }: with lib; let cfg = config.services.libinput; xorgBool = v: if v then "on" else "off"; mkConfigForDevice = deviceType: { dev = mkOption { type = types.nullOr types.str; dev = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; example = "/dev/input/event0"; description = '' Loading @@ -17,8 +14,8 @@ let cfg = config.services.libinput; ''; }; accelProfile = mkOption { type = types.enum [ "flat" "adaptive" "custom" ]; accelProfile = lib.mkOption { type = lib.types.enum [ "flat" "adaptive" "custom" ]; default = "adaptive"; example = "flat"; description = '' Loading @@ -36,8 +33,8 @@ let cfg = config.services.libinput; ''; }; accelSpeed = mkOption { type = types.nullOr types.str; accelSpeed = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; example = "-0.5"; description = '' Loading @@ -46,8 +43,8 @@ let cfg = config.services.libinput; ''; }; accelPointsFallback = mkOption { type = types.nullOr (types.listOf types.number); accelPointsFallback = lib.mkOption { type = lib.types.nullOr (lib.types.listOf lib.types.number); default = null; example = [ 0.0 1.0 2.4 2.5 ]; description = '' Loading @@ -56,8 +53,8 @@ let cfg = config.services.libinput; ''; }; accelPointsMotion = mkOption { type = types.nullOr (types.listOf types.number); accelPointsMotion = lib.mkOption { type = lib.types.nullOr (lib.types.listOf lib.types.number); default = null; example = [ 0.0 1.0 2.4 2.5 ]; description = '' Loading @@ -66,8 +63,8 @@ let cfg = config.services.libinput; ''; }; accelPointsScroll = mkOption { type = types.nullOr (types.listOf types.number); accelPointsScroll = lib.mkOption { type = lib.types.nullOr (lib.types.listOf lib.types.number); default = null; example = [ 0.0 1.0 2.4 2.5 ]; description = '' Loading @@ -76,8 +73,8 @@ let cfg = config.services.libinput; ''; }; accelStepFallback = mkOption { type = types.nullOr types.number; accelStepFallback = lib.mkOption { type = lib.types.nullOr lib.types.number; default = null; example = 0.1; description = '' Loading @@ -87,8 +84,8 @@ let cfg = config.services.libinput; ''; }; accelStepMotion = mkOption { type = types.nullOr types.number; accelStepMotion = lib.mkOption { type = lib.types.nullOr lib.types.number; default = null; example = 0.1; description = '' Loading @@ -98,8 +95,8 @@ let cfg = config.services.libinput; ''; }; accelStepScroll = mkOption { type = types.nullOr types.number; accelStepScroll = lib.mkOption { type = lib.types.nullOr lib.types.number; default = null; example = 0.1; description = '' Loading @@ -109,8 +106,8 @@ let cfg = config.services.libinput; ''; }; buttonMapping = mkOption { type = types.nullOr types.str; buttonMapping = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; example = "1 6 3 4 5 0 7"; description = '' Loading @@ -123,8 +120,8 @@ let cfg = config.services.libinput; ''; }; calibrationMatrix = mkOption { type = types.nullOr types.str; calibrationMatrix = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; example = "0.5 0 0 0 0.8 0.1 0 0 1"; description = '' Loading @@ -133,8 +130,8 @@ let cfg = config.services.libinput; ''; }; clickMethod = mkOption { type = types.nullOr (types.enum [ "none" "buttonareas" "clickfinger" ]); clickMethod = lib.mkOption { type = lib.types.nullOr (lib.types.enum [ "none" "buttonareas" "clickfinger" ]); default = null; example = "buttonareas"; description = '' Loading @@ -145,14 +142,14 @@ let cfg = config.services.libinput; ''; }; leftHanded = mkOption { type = types.bool; leftHanded = lib.mkOption { type = lib.types.bool; default = false; description = "Enables left-handed button orientation, i.e. swapping left and right buttons."; }; middleEmulation = mkOption { type = types.bool; middleEmulation = lib.mkOption { type = lib.types.bool; default = true; description = '' Enables middle button emulation. When enabled, pressing the left and right buttons Loading @@ -160,14 +157,14 @@ let cfg = config.services.libinput; ''; }; naturalScrolling = mkOption { type = types.bool; naturalScrolling = lib.mkOption { type = lib.types.bool; default = false; description = "Enables or disables natural scrolling behavior."; }; scrollButton = mkOption { type = types.nullOr types.int; scrollButton = lib.mkOption { type = lib.types.nullOr lib.types.int; default = null; example = 1; description = '' Loading @@ -176,8 +173,8 @@ let cfg = config.services.libinput; ''; }; scrollMethod = mkOption { type = types.enum [ "twofinger" "edge" "button" "none" ]; scrollMethod = lib.mkOption { type = lib.types.enum [ "twofinger" "edge" "button" "none" ]; default = "twofinger"; example = "edge"; description = '' Loading @@ -186,8 +183,8 @@ let cfg = config.services.libinput; ''; }; horizontalScrolling = mkOption { type = types.bool; horizontalScrolling = lib.mkOption { type = lib.types.bool; default = true; description = '' Enables or disables horizontal scrolling. When disabled, this driver will discard any Loading @@ -196,8 +193,8 @@ let cfg = config.services.libinput; ''; }; sendEventsMode = mkOption { type = types.enum [ "disabled" "enabled" "disabled-on-external-mouse" ]; sendEventsMode = lib.mkOption { type = lib.types.enum [ "disabled" "enabled" "disabled-on-external-mouse" ]; default = "enabled"; example = "disabled"; description = '' Loading @@ -206,24 +203,24 @@ let cfg = config.services.libinput; ''; }; tapping = mkOption { type = types.bool; tapping = lib.mkOption { type = lib.types.bool; default = true; description = '' Enables or disables tap-to-click behavior. ''; }; tappingButtonMap = mkOption { type = types.nullOr (types.enum [ "lrm" "lmr" ]); tappingButtonMap = lib.mkOption { type = lib.types.nullOr (lib.types.enum [ "lrm" "lmr" ]); default = null; description = '' Set the button mapping for 1/2/3-finger taps to left/right/middle or left/middle/right, respectively. ''; }; tappingDragLock = mkOption { type = types.bool; tappingDragLock = lib.mkOption { type = lib.types.bool; default = true; description = '' Enables or disables drag lock during tapping behavior. When enabled, a finger up during tap- Loading @@ -232,8 +229,8 @@ let cfg = config.services.libinput; ''; }; transformationMatrix = mkOption { type = types.nullOr types.str; transformationMatrix = lib.mkOption { type = lib.types.nullOr lib.types.str; default = null; example = "0.5 0 0 0 0.8 0.1 0 0 1"; description = '' Loading @@ -242,16 +239,16 @@ let cfg = config.services.libinput; ''; }; disableWhileTyping = mkOption { type = types.bool; disableWhileTyping = lib.mkOption { type = lib.types.bool; default = false; description = '' Disable input method while typing. ''; }; additionalOptions = mkOption { type = types.lines; additionalOptions = lib.mkOption { type = lib.types.lines; default = ""; example = '' Loading @@ -269,28 +266,28 @@ let cfg = config.services.libinput; Identifier "libinput ${deviceType} configuration" MatchDriver "libinput" MatchIs${matchIs} "${xorgBool true}" ${optionalString (cfg.${deviceType}.dev != null) ''MatchDevicePath "${cfg.${deviceType}.dev}"''} ${lib.optionalString (cfg.${deviceType}.dev != null) ''MatchDevicePath "${cfg.${deviceType}.dev}"''} Option "AccelProfile" "${cfg.${deviceType}.accelProfile}" ${optionalString (cfg.${deviceType}.accelSpeed != null) ''Option "AccelSpeed" "${cfg.${deviceType}.accelSpeed}"''} ${optionalString (cfg.${deviceType}.accelPointsFallback != null) ''Option "AccelPointsFallback" "${toString cfg.${deviceType}.accelPointsFallback}"''} ${optionalString (cfg.${deviceType}.accelPointsMotion != null) ''Option "AccelPointsMotion" "${toString cfg.${deviceType}.accelPointsMotion}"''} ${optionalString (cfg.${deviceType}.accelPointsScroll != null) ''Option "AccelPointsScroll" "${toString cfg.${deviceType}.accelPointsScroll}"''} ${optionalString (cfg.${deviceType}.accelStepFallback != null) ''Option "AccelStepFallback" "${toString cfg.${deviceType}.accelStepFallback}"''} ${optionalString (cfg.${deviceType}.accelStepMotion != null) ''Option "AccelStepMotion" "${toString cfg.${deviceType}.accelStepMotion}"''} ${optionalString (cfg.${deviceType}.accelStepScroll != null) ''Option "AccelStepScroll" "${toString cfg.${deviceType}.accelStepScroll}"''} ${optionalString (cfg.${deviceType}.buttonMapping != null) ''Option "ButtonMapping" "${cfg.${deviceType}.buttonMapping}"''} ${optionalString (cfg.${deviceType}.calibrationMatrix != null) ''Option "CalibrationMatrix" "${cfg.${deviceType}.calibrationMatrix}"''} ${optionalString (cfg.${deviceType}.transformationMatrix != null) ''Option "TransformationMatrix" "${cfg.${deviceType}.transformationMatrix}"''} ${optionalString (cfg.${deviceType}.clickMethod != null) ''Option "ClickMethod" "${cfg.${deviceType}.clickMethod}"''} ${lib.optionalString (cfg.${deviceType}.accelSpeed != null) ''Option "AccelSpeed" "${cfg.${deviceType}.accelSpeed}"''} ${lib.optionalString (cfg.${deviceType}.accelPointsFallback != null) ''Option "AccelPointsFallback" "${toString cfg.${deviceType}.accelPointsFallback}"''} ${lib.optionalString (cfg.${deviceType}.accelPointsMotion != null) ''Option "AccelPointsMotion" "${toString cfg.${deviceType}.accelPointsMotion}"''} ${lib.optionalString (cfg.${deviceType}.accelPointsScroll != null) ''Option "AccelPointsScroll" "${toString cfg.${deviceType}.accelPointsScroll}"''} ${lib.optionalString (cfg.${deviceType}.accelStepFallback != null) ''Option "AccelStepFallback" "${toString cfg.${deviceType}.accelStepFallback}"''} ${lib.optionalString (cfg.${deviceType}.accelStepMotion != null) ''Option "AccelStepMotion" "${toString cfg.${deviceType}.accelStepMotion}"''} ${lib.optionalString (cfg.${deviceType}.accelStepScroll != null) ''Option "AccelStepScroll" "${toString cfg.${deviceType}.accelStepScroll}"''} ${lib.optionalString (cfg.${deviceType}.buttonMapping != null) ''Option "ButtonMapping" "${cfg.${deviceType}.buttonMapping}"''} ${lib.optionalString (cfg.${deviceType}.calibrationMatrix != null) ''Option "CalibrationMatrix" "${cfg.${deviceType}.calibrationMatrix}"''} ${lib.optionalString (cfg.${deviceType}.transformationMatrix != null) ''Option "TransformationMatrix" "${cfg.${deviceType}.transformationMatrix}"''} ${lib.optionalString (cfg.${deviceType}.clickMethod != null) ''Option "ClickMethod" "${cfg.${deviceType}.clickMethod}"''} Option "LeftHanded" "${xorgBool cfg.${deviceType}.leftHanded}" Option "MiddleEmulation" "${xorgBool cfg.${deviceType}.middleEmulation}" Option "NaturalScrolling" "${xorgBool cfg.${deviceType}.naturalScrolling}" ${optionalString (cfg.${deviceType}.scrollButton != null) ''Option "ScrollButton" "${toString cfg.${deviceType}.scrollButton}"''} ${lib.optionalString (cfg.${deviceType}.scrollButton != null) ''Option "ScrollButton" "${toString cfg.${deviceType}.scrollButton}"''} Option "ScrollMethod" "${cfg.${deviceType}.scrollMethod}" Option "HorizontalScrolling" "${xorgBool cfg.${deviceType}.horizontalScrolling}" Option "SendEventsMode" "${cfg.${deviceType}.sendEventsMode}" Option "Tapping" "${xorgBool cfg.${deviceType}.tapping}" ${optionalString (cfg.${deviceType}.tappingButtonMap != null) ''Option "TappingButtonMap" "${cfg.${deviceType}.tappingButtonMap}"''} ${lib.optionalString (cfg.${deviceType}.tappingButtonMap != null) ''Option "TappingButtonMap" "${cfg.${deviceType}.tappingButtonMap}"''} Option "TappingDragLock" "${xorgBool cfg.${deviceType}.tappingDragLock}" Option "DisableWhileTyping" "${xorgBool cfg.${deviceType}.disableWhileTyping}" ${cfg.${deviceType}.additionalOptions} Loading @@ -298,7 +295,7 @@ let cfg = config.services.libinput; in { imports = (map (option: mkRenamedOptionModule ([ "services" "xserver" "libinput" option ]) [ "services" "libinput" "touchpad" option ]) [ (map (option: lib.mkRenamedOptionModule ([ "services" "xserver" "libinput" option ]) [ "services" "libinput" "touchpad" option ]) [ "accelProfile" "accelSpeed" "buttonMapping" Loading @@ -318,15 +315,15 @@ in { "disableWhileTyping" "additionalOptions" ]) ++ [ (mkRenamedOptionModule [ "services" "xserver" "libinput" "enable" ] [ "services" "libinput" "enable" ]) (mkRenamedOptionModule [ "services" "xserver" "libinput" "mouse" ] [ "services" "libinput" "mouse" ]) (mkRenamedOptionModule [ "services" "xserver" "libinput" "touchpad" ] [ "services" "libinput" "touchpad" ]) (lib.mkRenamedOptionModule [ "services" "xserver" "libinput" "enable" ] [ "services" "libinput" "enable" ]) (lib.mkRenamedOptionModule [ "services" "xserver" "libinput" "mouse" ] [ "services" "libinput" "mouse" ]) (lib.mkRenamedOptionModule [ "services" "xserver" "libinput" "touchpad" ] [ "services" "libinput" "touchpad" ]) ]; options = { services.libinput = { enable = mkEnableOption "libinput" // { enable = lib.mkEnableOption "libinput" // { default = config.services.xserver.enable; defaultText = lib.literalExpression "config.services.xserver.enable"; }; Loading @@ -336,7 +333,7 @@ in { }; config = mkIf cfg.enable { config = lib.mkIf cfg.enable { services.xserver.modules = [ pkgs.xorg.xf86inputlibinput ]; Loading