diff options
author | Nikolay Amiantov <ab@fmap.me> | 2016-09-13 01:59:47 +0300 |
---|---|---|
committer | Nikolay Amiantov <ab@fmap.me> | 2016-09-13 01:59:47 +0300 |
commit | 9b26cb92e3c9a6f9c28e68d194c3f015c9eabcd4 (patch) | |
tree | 80deb32f0bf0c62f2ef6b47d4d08442132e6f94a /nixos | |
parent | 6a9fb8b9e0ab806ae83a19a001f742f78087dd5d (diff) | |
parent | bc493ccfcc9e1308b32eabe335b8ef31626a949e (diff) | |
download | nixlib-9b26cb92e3c9a6f9c28e68d194c3f015c9eabcd4.tar nixlib-9b26cb92e3c9a6f9c28e68d194c3f015c9eabcd4.tar.gz nixlib-9b26cb92e3c9a6f9c28e68d194c3f015c9eabcd4.tar.bz2 nixlib-9b26cb92e3c9a6f9c28e68d194c3f015c9eabcd4.tar.lz nixlib-9b26cb92e3c9a6f9c28e68d194c3f015c9eabcd4.tar.xz nixlib-9b26cb92e3c9a6f9c28e68d194c3f015c9eabcd4.tar.zst nixlib-9b26cb92e3c9a6f9c28e68d194c3f015c9eabcd4.zip |
Merge branch 'displaylink'
Close #18041
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/hardware/video/displaylink.nix | 61 | ||||
-rw-r--r-- | nixos/modules/module-list.nix | 1 |
2 files changed, 62 insertions, 0 deletions
diff --git a/nixos/modules/hardware/video/displaylink.nix b/nixos/modules/hardware/video/displaylink.nix new file mode 100644 index 000000000000..2a9382f39410 --- /dev/null +++ b/nixos/modules/hardware/video/displaylink.nix @@ -0,0 +1,61 @@ +{ config, lib, ... }: + +with lib; + +let + + enabled = elem "displaylink" config.services.xserver.videoDrivers; + + displaylink = config.boot.kernelPackages.displaylink; + +in + +{ + + config = mkIf enabled { + + boot.extraModulePackages = [ displaylink ]; + + boot.kernelModules = [ "evdi" ]; + + # Those are taken from displaylink-installer.sh and from Arch Linux AUR package. + + services.udev.extraRules = '' + ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{bNumInterfaces}=="*5", TAG+="uaccess" + ''; + + powerManagement.powerDownCommands = '' + #flush any bytes in pipe + while read -n 1 -t 1 SUSPEND_RESULT < /tmp/PmMessagesPort_out; do : ; done; + + #suspend DisplayLinkManager + echo "S" > /tmp/PmMessagesPort_in + + #wait until suspend of DisplayLinkManager finish + read -n 1 -t 10 SUSPEND_RESULT < /tmp/PmMessagesPort_out + ''; + + powerManagement.resumeCommands = '' + #resume DisplayLinkManager + echo "R" > /tmp/PmMessagesPort_in + ''; + + systemd.services.displaylink = { + description = "DisplayLink Manager Service"; + after = [ "display-manager.service" ]; + wantedBy = [ "graphical.target" ]; + + serviceConfig = { + ExecStart = "${displaylink}/bin/DisplayLinkManager"; + Restart = "always"; + RestartSec = 5; + }; + + preStart = '' + mkdir -p /var/log/displaylink + ''; + }; + + }; + +} diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 7a74fe2d785b..485138e1ff35 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -40,6 +40,7 @@ ./hardware/video/amdgpu.nix ./hardware/video/ati.nix ./hardware/video/bumblebee.nix + ./hardware/video/displaylink.nix ./hardware/video/nvidia.nix ./hardware/video/webcam/facetimehd.nix ./i18n/input-method/default.nix |