summary refs log tree commit diff
path: root/pkgs/os-specific/linux/displaylink/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/os-specific/linux/displaylink/default.nix')
-rw-r--r--pkgs/os-specific/linux/displaylink/default.nix61
1 files changed, 22 insertions, 39 deletions
diff --git a/pkgs/os-specific/linux/displaylink/default.nix b/pkgs/os-specific/linux/displaylink/default.nix
index 87cf7c18caf..1f923b9567a 100644
--- a/pkgs/os-specific/linux/displaylink/default.nix
+++ b/pkgs/os-specific/linux/displaylink/default.nix
@@ -1,64 +1,47 @@
-{ stdenv, lib, fetchurl, fetchFromGitHub, unzip, kernel, utillinux, libdrm, libusb1, makeWrapper }:
+{ stdenv, lib, fetchurl, unzip, utillinux, libusb1, evdi, systemd, makeWrapper }:
 
 let
   arch =
     if stdenv.system == "x86_64-linux" then "x64"
     else if stdenv.system == "i686-linux" then "x86"
     else throw "Unsupported architecture";
-  libPath = lib.makeLibraryPath [ stdenv.cc.cc utillinux libusb1 ];
+  bins = "${arch}-ubuntu-1604";
+  libPath = lib.makeLibraryPath [ stdenv.cc.cc utillinux libusb1 evdi ];
 
 in stdenv.mkDerivation rec {
   name = "displaylink-${version}";
-  version = "1.1.62";
+  version = "1.3.52";
 
-  src = fetchFromGitHub {
-    owner = "DisplayLink";
-    repo = "evdi";
-    rev = "fe779940ff9fc7b512019619e24a5b22e4070f6a";
-    sha256 = "02hw83f6lscms8hssjzf30hl9zly3b28qcxwmxvnqwfhx1q491z9";
-  };
-
-  daemon = fetchurl {
+  src = fetchurl {
     name = "displaylink.zip";
-    url = "http://www.displaylink.com/downloads/file?id=607";
-    sha256 = "0jky3xk4dfzbzg386qya9l9952i4m8zhf55fdl06pi9r82k2iijx";
+    url = "http://www.displaylink.com/downloads/file?id=744";
+    sha256 = "0ridpsxcf761vym0nlpq702qa46ynddzci17bjmyax2pph7khr0k";
   };
 
   nativeBuildInputs = [ unzip makeWrapper ];
 
-  buildInputs = [ kernel libdrm ];
-
   buildCommand = ''
-    unpackPhase
-    cd $sourceRoot
-    unzip $daemon
+    unzip $src
     chmod +x displaylink-driver-${version}.run
-    ./displaylink-driver-${version}.run --target daemon --noexec
+    ./displaylink-driver-${version}.run --target . --noexec
 
-    ( cd module
-      export makeFlags="$makeFlags KVER=${kernel.modDirVersion} KDIR=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build"
-      export hardeningDisable="pic format"
-      buildPhase
-      install -Dm755 evdi.ko $out/lib/modules/${kernel.modDirVersion}/kernel/drivers/gpu/drm/evdi/evdi.ko
+    sed -i "s,/opt/displaylink/udev.sh,$out/lib/udev/displaylink.sh,g" udev-installer.sh
+    ( source udev-installer.sh
+      mkdir -p $out/lib/udev/rules.d
+      main systemd "$out/lib/udev/rules.d/99-displaylink.rules" "$out/lib/udev/displaylink.sh"
     )
+    sed -i '2iPATH=${systemd}/bin:$PATH' $out/lib/udev/displaylink.sh
 
-    ( cd library
-      buildPhase
-      install -Dm755 libevdi.so $out/lib/libevdi.so
-    )
+    install -Dt $out/lib/displaylink *.spkg
+    install -Dm755 ${bins}/DisplayLinkManager $out/bin/DisplayLinkManager
+    patchelf \
+      --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
+      --set-rpath ${libPath} \
+      $out/bin/DisplayLinkManager
+    wrapProgram $out/bin/DisplayLinkManager \
+      --run "cd $out/lib/displaylink"
 
     fixupPhase
-
-    ( cd daemon
-      install -Dt $out/lib/displaylink *.spkg
-      install -Dm755 ${arch}/DisplayLinkManager $out/bin/DisplayLinkManager
-      patchelf \
-        --set-interpreter $(cat ${stdenv.cc}/nix-support/dynamic-linker) \
-        --set-rpath $out/lib:${libPath} \
-        $out/bin/DisplayLinkManager
-      wrapProgram $out/bin/DisplayLinkManager \
-        --run "cd $out/lib/displaylink"
-    )
   '';
 
   meta = with stdenv.lib; {