Displaylink: Difference between revisions
imported>Liberatys mNo edit summary |
Add dlm service |
||
(17 intermediate revisions by 10 users not shown) | |||
Line 1: | Line 1: | ||
===DisplayLink monitors=== | ===DisplayLink monitors=== | ||
In order to use | In order to use DisplayLink monitors over USB, such as the ASUS MB16AC, the DisplayLink driver needs to be installed. | ||
Since these drivers depend on binary unfree blobs, you will need to first add it to your Nix store. | |||
Run <code>nix-shell -p displaylink --arg config '{ allowUnfree = true; }'</code> to get the '''instructions and follow them'''. | |||
Then | When you try to use <code>pkgs.displaylink</code> in your nixos system, you will get the same instructions printed to the stderr, follow those to prefetch the driver. Once the blob is in the Nix store you can add the package<syntaxhighlight lang="nix"> | ||
environment.systemPackages = with pkgs; [ | |||
displaylink | |||
]; | |||
</syntaxhighlight>Then add the videoDrivers:<syntaxhighlight lang="nixos">services.xserver.videoDrivers = [ "displaylink" "modesetting" ];</syntaxhighlight>The module <code>nixos/modules/hardware/video/displaylink.nix</code> should also work for wlroots compositors. | |||
At last - at least on Gnome using wayland you also have to enable ` dml` service<syntaxhighlight lang="nix"> | |||
systemd.services.dlm.wantedBy = [ "multi-user.target" ]; | |||
</ | </syntaxhighlight> | ||
====Connecting a second external monitor==== | ====Connecting a second external monitor==== | ||
Line 18: | Line 22: | ||
${lib.getBin pkgs.xorg.xrandr}/bin/xrandr --setprovideroutputsource 2 0 | ${lib.getBin pkgs.xorg.xrandr}/bin/xrandr --setprovideroutputsource 2 0 | ||
'';</syntaxhighlight> | '';</syntaxhighlight> | ||
==Sway== | |||
Identify which card has the render device, <code>evdi</code> is the DisplayLink interface, so it's not <code>card0</code>, but <code>card1</code>. | |||
<syntaxhighlight lang="console"> | |||
$ ls -l /dev/dri/by-path | |||
lrwxrwxrwx - root 2 Nov 13:38 pci-0000:00:02.0-card -> ../card1 | |||
lrwxrwxrwx - root 2 Nov 13:38 pci-0000:00:02.0-render -> ../renderD128 | |||
lrwxrwxrwx - root 2 Nov 13:38 platform-evdi.0-card -> ../card0 | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="nix"> | |||
environment.variables = { | |||
WLR_EVDI_RENDER_DEVICE = "/dev/dri/card1"; | |||
}; | |||
nixpkgs.overlays = [ | |||
(final: prev: { | |||
wlroots_0_17 = prev.wlroots_0_17.overrideAttrs (old: { # you may need to use 0_18 | |||
patches = (old.patches or [ ]) ++ [ | |||
(prev.fetchpatch { | |||
url = "https://gitlab.freedesktop.org/wlroots/wlroots/uploads/bd115aa120d20f2c99084951589abf9c/DisplayLink_v2.patch"; | |||
hash = "sha256-vWQc2e8a5/YZaaHe+BxfAR/Ni8HOs2sPJ8Nt9pfxqiE="; | |||
}) | |||
]; | |||
}); | |||
}) | |||
]; | |||
services.xserver.videoDrivers = [ "displaylink" ]; | |||
systemd.services.dlm.wantedBy = [ "multi-user.target" ]; | |||
</syntaxhighlight> | |||
Note as of [https://github.com/NixOS/nixpkgs/pull/351752 2024-10-30] nixos-unstable sway uses <code>wlroots_0_18</code>. The patch above applies correctly but you will need to invoke sway with the <code>--unsupported-gpu</code> flag. | |||
[https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/1823#note_2146862 Source] | |||
[[Category:Video]] | [[Category:Video]] |