python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / nixos / modules / hardware / video / displaylink.nix
blob912f53da836a834c1bfb24b327e77d8b9f26df58
1 { config, lib, pkgs, ... }:
3 with lib;
5 let
7   enabled = elem "displaylink" config.services.xserver.videoDrivers;
9   evdi = config.boot.kernelPackages.evdi;
11   displaylink = pkgs.displaylink.override {
12     inherit evdi;
13   };
19   config = mkIf enabled {
21     boot.extraModulePackages = [ evdi ];
22     boot.kernelModules = [ "evdi" ];
24     environment.etc."X11/xorg.conf.d/40-displaylink.conf".text = ''
25       Section "OutputClass"
26         Identifier  "DisplayLink"
27         MatchDriver "evdi"
28         Driver      "modesetting"
29         Option      "AccelMethod" "none"
30       EndSection
31     '';
33     # make the device available
34     services.xserver.displayManager.sessionCommands = ''
35       ${lib.getBin pkgs.xorg.xrandr}/bin/xrandr --setprovideroutputsource 1 0
36     '';
38     # Those are taken from displaylink-installer.sh and from Arch Linux AUR package.
40     services.udev.packages = [ displaylink ];
42     powerManagement.powerDownCommands = ''
43       #flush any bytes in pipe
44       while read -n 1 -t 1 SUSPEND_RESULT < /tmp/PmMessagesPort_out; do : ; done;
46       #suspend DisplayLinkManager
47       echo "S" > /tmp/PmMessagesPort_in
49       #wait until suspend of DisplayLinkManager finish
50       if [ -f /tmp/PmMessagesPort_out ]; then
51         #wait until suspend of DisplayLinkManager finish
52         read -n 1 -t 10 SUSPEND_RESULT < /tmp/PmMessagesPort_out
53       fi
54     '';
56     powerManagement.resumeCommands = ''
57       #resume DisplayLinkManager
58       echo "R" > /tmp/PmMessagesPort_in
59     '';
61     systemd.services.dlm = {
62       description = "DisplayLink Manager Service";
63       after = [ "display-manager.service" ];
64       conflicts = [ "getty@tty7.service" ];
66       serviceConfig = {
67         ExecStart = "${displaylink}/bin/DisplayLinkManager";
68         Restart = "always";
69         RestartSec = 5;
70         LogsDirectory = "displaylink";
71       };
72     };
74   };