about summary refs log tree commit diff
path: root/pkgs/by-name/se/segger-jlink/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name/se/segger-jlink/package.nix')
-rw-r--r--[-rwxr-xr-x]pkgs/by-name/se/segger-jlink/package.nix193
1 files changed, 64 insertions, 129 deletions
diff --git a/pkgs/by-name/se/segger-jlink/package.nix b/pkgs/by-name/se/segger-jlink/package.nix
index d7b2e0cfcaebb..a092097bce3bc 100755..100644
--- a/pkgs/by-name/se/segger-jlink/package.nix
+++ b/pkgs/by-name/se/segger-jlink/package.nix
@@ -1,39 +1,23 @@
 { lib
 , stdenv
 , fetchurl
+, callPackage
 , autoPatchelfHook
 , udev
 , config
 , acceptLicense ? config.segger-jlink.acceptLicense or false
-, fontconfig
-, xorg
+, headless ? false
 , makeDesktopItem
 , copyDesktopItems
 }:
 
 let
-  supported = {
-    x86_64-linux = {
-      name = "x86_64";
-      hash = "sha256-UsDP+wMS7ZeWMQBObwv5RxbwuWU8nLnHes7LEXK6imE=";
-    };
-    i686-linux = {
-      name = "i386";
-      hash = "sha256-InNHXWAc6QZEWyEcTTUCRMDsKd0RtR8d7O0clWKuFo8=";
-    };
-    aarch64-linux = {
-      name = "arm64";
-      hash = "sha256-ueIGdqfuIRCuEwaPkgZMgghO9DU11IboLLMryg/mxQ8=";
-    };
-    armv7l-linux = {
-      name = "arm";
-      hash = "sha256-6nTQGQpkbqQntheQqiUAdVS4rp30nl2KRUn5Adsfeoo=";
-    };
-  };
+  source = import ./source.nix;
+  supported = removeAttrs source ["version"];
 
   platform = supported.${stdenv.system} or (throw "unsupported platform ${stdenv.system}");
 
-  version = "796b";
+  inherit (source) version;
 
   url = "https://www.segger.com/downloads/jlink/JLink_Linux_V${version}_${platform.name}.tgz";
 
@@ -66,69 +50,7 @@ let
         curlOpts = "--data accept_license_agreement=accepted";
       };
 
-  qt4-bundled = stdenv.mkDerivation {
-    pname = "segger-jlink-qt4";
-    inherit src version;
-
-    nativeBuildInputs = [
-      autoPatchelfHook
-    ];
-
-    buildInputs = [
-      stdenv.cc.cc.lib
-      fontconfig
-      xorg.libXrandr
-      xorg.libXfixes
-      xorg.libXcursor
-      xorg.libSM
-      xorg.libICE
-      xorg.libX11
-    ];
-
-    dontConfigure = true;
-    dontBuild = true;
-
-    installPhase = ''
-      runHook preInstall
-
-      # Install libraries
-      mkdir -p $out/lib
-      mv libQt* $out/lib
-
-      runHook postInstall
-    '';
-
-    meta = with lib; {
-      description = "Bundled QT4 libraries for the J-Link Software and Documentation pack";
-      homepage = "https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack";
-      license = licenses.lgpl21;
-      maintainers = with maintainers; [ stargate01 ];
-      knownVulnerabilities = [
-        "This bundled version of Qt 4 has reached its end of life after 2015. See https://github.com/NixOS/nixpkgs/pull/174634"
-        "CVE-2023-43114"
-        "CVE-2023-38197"
-        "CVE-2023-37369"
-        "CVE-2023-34410"
-        "CVE-2023-32763"
-        "CVE-2023-32762"
-        "CVE-2023-32573"
-        "CVE-2022-25634"
-        "CVE-2020-17507"
-        "CVE-2020-0570"
-        "CVE-2018-21035"
-        "CVE-2018-19873"
-        "CVE-2018-19871"
-        "CVE-2018-19870"
-        "CVE-2018-19869"
-        "CVE-2015-1290"
-        "CVE-2014-0190"
-        "CVE-2013-0254"
-        "CVE-2012-6093"
-        "CVE-2012-5624"
-        "CVE-2009-2700"
-      ];
-    };
-  };
+  qt4-bundled = callPackage ./qt4-bundled.nix { inherit src version; };
 
 in stdenv.mkDerivation {
   pname = "segger-jlink";
@@ -136,10 +58,11 @@ in stdenv.mkDerivation {
 
   nativeBuildInputs = [
     autoPatchelfHook
+  ] ++ lib.optionals (!headless) [
     copyDesktopItems
   ];
 
-  buildInputs = [
+  buildInputs = lib.optionals (!headless) [
     qt4-bundled
   ];
 
@@ -151,55 +74,60 @@ in stdenv.mkDerivation {
   dontConfigure = true;
   dontBuild = true;
 
-  desktopItems = map (entry:
-    (makeDesktopItem {
-      name = entry;
-      exec = entry;
-      icon = "applications-utilities";
-      desktopName = entry;
-      genericName = "SEGGER ${entry}";
-      categories = [ "Development" ];
-      type = "Application";
-      terminal = false;
-      startupNotify = false;
-    })
-  ) [
-    "JFlash"
-    "JFlashLite"
-    "JFlashSPI"
-    "JLinkConfig"
-    "JLinkGDBServer"
-    "JLinkLicenseManager"
-    "JLinkRTTViewer"
-    "JLinkRegistration"
-    "JLinkRemoteServer"
-    "JLinkSWOViewer"
-    "JLinkUSBWebServer"
-    "JMem"
-  ];
+  desktopItems = lib.optionals (!headless) (
+    map (entry:
+      (makeDesktopItem {
+        name = entry;
+        exec = entry;
+        icon = "applications-utilities";
+        desktopName = entry;
+        genericName = "SEGGER ${entry}";
+        categories = [ "Development" ];
+        type = "Application";
+        terminal = false;
+        startupNotify = false;
+      })
+    ) [
+      "JFlash"
+      "JFlashLite"
+      "JFlashSPI"
+      "JLinkConfig"
+      "JLinkGDBServer"
+      "JLinkLicenseManager"
+      "JLinkRTTViewer"
+      "JLinkRegistration"
+      "JLinkRemoteServer"
+      "JLinkSWOViewer"
+      "JLinkUSBWebServer"
+      "JMem"
+    ]
+  );
 
   installPhase = ''
     runHook preInstall
 
-    # Install binaries and runtime files into /opt/
     mkdir -p $out/opt
-    mv J* ETC GDBServer Firmwares $out/opt
-
-    # Link executables into /bin/
-    mkdir -p $out/bin
-    for binr in $out/opt/*Exe; do
-      binrlink=''${binr#"$out/opt/"}
-      ln -s $binr $out/bin/$binrlink
-      # Create additional symlinks without "Exe" suffix
-      binrlink=''${binrlink/%Exe}
-      ln -s $binr $out/bin/$binrlink
-    done
 
-    # Copy special alias symlinks
-    for slink in $(find $out/opt/. -type l); do
-      cp -P -n $slink $out/bin || true
-      rm $slink
-    done
+    ${lib.optionalString (!headless) ''
+      # Install binaries and runtime files into /opt/
+      mv J* ETC GDBServer Firmwares $out/opt
+
+      # Link executables into /bin/
+      mkdir -p $out/bin
+      for binr in $out/opt/*Exe; do
+        binrlink=''${binr#"$out/opt/"}
+        ln -s $binr $out/bin/$binrlink
+        # Create additional symlinks without "Exe" suffix
+        binrlink=''${binrlink/%Exe}
+        ln -s $binr $out/bin/$binrlink
+      done
+
+      # Copy special alias symlinks
+      for slink in $(find $out/opt/. -type l); do
+        cp -P -n $slink $out/bin || true
+        rm $slink
+      done
+    ''}
 
     # Install libraries
     install -Dm444 libjlinkarm.so* -t $out/lib
@@ -218,11 +146,18 @@ in stdenv.mkDerivation {
     runHook postInstall
   '';
 
+  passthru.updateScript = ./update.py;
+
   meta = with lib; {
     description = "J-Link Software and Documentation pack";
     homepage = "https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack";
+    changelog = "https://www.segger.com/downloads/jlink/ReleaseNotes_JLink.html";
     license = licenses.unfree;
     platforms = attrNames supported;
-    maintainers = with maintainers; [ FlorianFranzen stargate01 ];
+    maintainers = with maintainers; [
+      FlorianFranzen
+      h7x4
+      stargate01
+    ];
   };
 }