From 82c8d78ca2fd9f3e252d464e96490bc84ca793b1 Mon Sep 17 00:00:00 2001 From: Sam Willcocks Date: Sat, 16 Apr 2022 16:47:10 +0100 Subject: [PATCH] zbar: copy locally and fix for macos aarch64 --- home/default.nix | 4 +- pkgs/default.nix | 4 +- pkgs/qrclip/default.nix | 5 ++- pkgs/zbar/default.nix | 86 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 pkgs/zbar/default.nix diff --git a/home/default.nix b/home/default.nix index beeba76..02cd57c 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,6 +1,6 @@ -{ pkgs, ... }: +{ pkgs, lib, ... }: -let mypkgs = (import ../modules/pkgs.nix { inherit pkgs; }); +let mypkgs = pkgs.callPackage ../modules/pkgs.nix { }; in { home.packages = mypkgs.all; home.sessionVariables = { diff --git a/pkgs/default.nix b/pkgs/default.nix index 875a499..7c5e11f 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,4 +1,6 @@ # TODO: auto import everything -{ pkgs }: { +{ pkgs, ... }: +{ qrclip = pkgs.callPackage ./qrclip { }; + zbar = pkgs.callPackage ./zbar { }; } diff --git a/pkgs/qrclip/default.nix b/pkgs/qrclip/default.nix index 06140ec..fcb6695 100644 --- a/pkgs/qrclip/default.nix +++ b/pkgs/qrclip/default.nix @@ -1,5 +1,6 @@ { pkgs }: -pkgs.writeShellScriptBin "qrclip" '' +let zbar = pkgs.mypkgs.zbar.override { enableVideo = false; }; +in pkgs.writeShellScriptBin "qrclip" '' set -eo pipefail - ${pkgs.pngpaste}/bin/pngpaste - | ${pkgs.zbar}/bin/zbarimg --raw -q1 - + ${pkgs.pngpaste}/bin/pngpaste - | ${zbar}/bin/zbarimg --raw -q1 - '' diff --git a/pkgs/zbar/default.nix b/pkgs/zbar/default.nix new file mode 100644 index 0000000..b97edb3 --- /dev/null +++ b/pkgs/zbar/default.nix @@ -0,0 +1,86 @@ +{ stdenv +, lib +, fetchFromGitHub +, imagemagickBig +, pkg-config +, libX11 +, libv4l +, libiconv +, qtbase ? null +, darwin +, qtx11extras ? null +, wrapQtAppsHook ? null +, wrapGAppsHook +, gtk3 +, xmlto +, docbook_xsl +, autoreconfHook +, dbus +, enableVideo ? stdenv.isLinux + # The implementation is buggy and produces an error like + # Name Error (Connection ":1.4380" is not allowed to own the service "org.linuxtv.Zbar" due to security policies in the configuration file) + # for every scanned code. + # see https://github.com/mchehab/zbar/issues/104 +, enableDbus ? false +, libintl +}: + +stdenv.mkDerivation rec { + pname = "zbar"; + version = "0.23.90"; + + outputs = [ "out" "lib" "dev" "doc" "man" ]; + + src = fetchFromGitHub { + owner = "mchehab"; + repo = "zbar"; + rev = version; + sha256 = "sha256-FvV7TMc4JbOiRjWLka0IhtpGGqGm5fis7h870OmJw2U="; + }; + + nativeBuildInputs = + [ pkg-config xmlto autoreconfHook docbook_xsl ] ++ lib.optionals enableVideo [ wrapQtAppsHook wrapGAppsHook ]; + + buildInputs = [ imagemagickBig libX11 libintl ] ++ lib.optionals enableDbus [ dbus ] + ++ lib.optionals enableVideo [ libv4l gtk3 qtbase qtx11extras ] + ++ lib.optionals stdenv.isDarwin [ libiconv darwin.apple_sdk.frameworks.Foundation ]; + + # Disable assertions which include -dev QtBase file paths. + NIX_CFLAGS_COMPILE = "-DQT_NO_DEBUG"; + + configureFlags = [ "--without-python" ] ++ (if enableDbus then + [ "--with-dbusconfdir=${placeholder "out"}/share" ] + else + [ "--without-dbus" ]) ++ (if enableVideo then + [ "--with-gtk=gtk3" ] + else [ + "--disable-video" + "--without-gtk" + "--without-qt" + ]); + + dontWrapQtApps = true; + dontWrapGApps = true; + + postFixup = lib.optionalString enableVideo '' + wrapGApp "$out/bin/zbarcam-gtk" + wrapQtApp "$out/bin/zbarcam-qt" + ''; + + enableParallelBuilding = true; + + meta = with lib; { + description = "Bar code reader"; + longDescription = '' + ZBar is an open source software suite for reading bar codes from various + sources, such as video streams, image files and raw intensity sensors. It + supports many popular symbologies (types of bar codes) including + EAN-13/UPC-A, UPC-E, EAN-8, Code 128, Code 39, Interleaved 2 of 5 and QR + Code. + ''; + maintainers = with maintainers; [ delroth raskin ]; + platforms = platforms.unix; + license = licenses.lgpl21; + homepage = "https://github.com/mchehab/zbar"; + }; +}