summary refs log tree commit diff
path: root/pkgs/applications/networking/breitbandmessung/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/networking/breitbandmessung/default.nix')
-rw-r--r--pkgs/applications/networking/breitbandmessung/default.nix153
1 files changed, 153 insertions, 0 deletions
diff --git a/pkgs/applications/networking/breitbandmessung/default.nix b/pkgs/applications/networking/breitbandmessung/default.nix
new file mode 100644
index 00000000000..31f33be3867
--- /dev/null
+++ b/pkgs/applications/networking/breitbandmessung/default.nix
@@ -0,0 +1,153 @@
+{ lib
+, stdenv
+, alsa-lib
+, at-spi2-atk
+, at-spi2-core
+, atk
+, autoPatchelfHook
+, cairo
+, cups
+, dbus
+, dpkg
+, expat
+, fetchurl
+, gdk-pixbuf
+, glib
+, gtk3
+, libdrm
+, libxkbcommon
+, makeWrapper
+, mesa
+, nixosTests
+, nspr
+, nss
+, pango
+, pciutils
+, systemd
+, undmg
+, writeShellScriptBin
+, xorg
+}:
+
+let
+  inherit (stdenv.hostPlatform) system;
+
+  version = "3.1.0";
+
+  # At first start, the program checks for supported operating systems by calling `lsb_release -a`
+  # and only runs when it finds Debian/Ubuntu. So we present us as Debian an make it happy.
+  fake-lsb-release = writeShellScriptBin "lsb_release" ''
+    echo "Distributor ID: Debian"
+    echo "Description:    Debian GNU/Linux 10 (buster)"
+    echo "Release:        10"
+    echo "Codename:       buster"
+  '';
+
+  binPath = lib.makeBinPath [
+    fake-lsb-release
+  ];
+
+  systemArgs = rec {
+    x86_64-linux = rec {
+      src = fetchurl {
+        url = "https://download.breitbandmessung.de/bbm/Breitbandmessung-${version}-linux.deb";
+        sha256 = "sha256-jSP+H9ej9Wd+swBZSy9uMi2ExSTZ191FGZhqaocTl7w=";
+      };
+
+      dontUnpack = true;
+
+      nativeBuildInputs = [
+        autoPatchelfHook
+        dpkg
+        makeWrapper
+      ];
+
+      buildInputs = runtimeDependencies;
+
+      runtimeDependencies = [
+        alsa-lib
+        at-spi2-atk
+        at-spi2-core
+        atk
+        cairo
+        cups
+        dbus
+        expat
+        gdk-pixbuf
+        glib
+        gtk3
+        libdrm
+        libxkbcommon
+        mesa
+        nspr
+        nss
+        pango
+        pciutils
+        systemd
+        xorg.libX11
+        xorg.libXcomposite
+        xorg.libXdamage
+        xorg.libXext
+        xorg.libXfixes
+        xorg.libXrandr
+        xorg.libxcb
+        xorg.libxshmfence
+      ];
+
+      installPhase = ''
+        dpkg-deb -x $src $out
+        mkdir -p $out/bin
+
+        chmod -R g-w $out
+
+        addAutoPatchelfSearchPath --no-recurse $out/opt/Breitbandmessung
+        autoPatchelfFile $out/opt/Breitbandmessung/breitbandmessung
+
+        makeWrapper $out/opt/Breitbandmessung/breitbandmessung $out/bin/breitbandmessung \
+          --prefix PATH : ${binPath}
+
+        mv $out/usr/share $out/share
+        rmdir $out/usr
+
+        # Fix the desktop link
+        substituteInPlace $out/share/applications/breitbandmessung.desktop \
+          --replace /opt/Breitbandmessung $out/bin
+      '';
+
+      dontAutoPatchelf = true;
+      dontPatchELF = true;
+    };
+
+    x86_64-darwin = {
+      src = fetchurl {
+        url = "https://download.breitbandmessung.de/bbm/Breitbandmessung-${version}-mac.dmg";
+        sha256 = "sha256-2c8mDKJuHDSw7p52EKnJO5vr2kNTLU6r9pmGPANjE20=";
+      };
+
+      nativeBuildInputs = [ undmg ];
+
+      installPhase = ''
+        runHook preInstall
+        mkdir -p $out/Applications/Breitbandmessung.app
+        cp -R . $out/Applications/Breitbandmessung.app
+        runHook postInstall
+      '';
+    };
+
+    aarch64-darwin = x86_64-darwin;
+  }.${system} or { src = throw "Unsupported system: ${system}"; };
+in
+stdenv.mkDerivation ({
+  pname = "breitbandmessung";
+  inherit version;
+
+  passthru.tests = { inherit (nixosTests) breitbandmessung; };
+
+  meta = with lib; {
+    description = "Broadband internet speed test app from the german Bundesnetzagentur";
+    homepage = "https://www.breitbandmessung.de";
+    license = licenses.unfree;
+    maintainers = with maintainers; [ b4dm4n ];
+    platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-darwin" ];
+  };
+} // systemArgs)